安装kubernetes v1.21.0

网友投稿 811 2022-10-24

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

安装kubernetes v1.21.0

1.1 实验拓扑图及环境

完成本章及后续的实验我们需要三台机器,1台master,2台worker,拓扑图及配置如图1-1所示。

图1-1 实验拓扑图

机器的配置如表格1-1所示。

表格1-1 练习环境主机名的设置

主机名IP地址内存需求操作系统版本角色
vms10.rhce.cc192.168.26.104Gcentos7.4master
vms11.rhce.cc192.168.26.114Gcentos7.4worker1
vms12.rhce.cc192.168.26.124Gcentos7.4worker2

1.2 实验准备

在安装kubernetes之前,需要设置好yum源,关闭selinux及关闭swap等准备工作。下面的准备操作都是在所有的节点上做的。

步骤1:建议所有节点使用Centos7.4,在所有节点上同步/etc/hosts。

[root@vmsX ~]# cat etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.26.10     vms10.rhce.cc         vms10

192.168.26.11     vms11.rhce.cc         vms11

192.168.26.12     vms12.rhce.cc         vms12

[root@vmsX ~]#

步骤2:在所有节点上配置防火墙和关闭selinux。

[root@vmsX ~]# firewall-cmd –get-default-zone

trusted

[root@vmsX ~]# getenforce

Disabled

[root@vmsX ~]#

步骤3:在所有节点上关闭swap,并注释掉/etc/fstab里swap相关条目。

[root@vms10 ~]# swapon -s

文件名 类型 大小 已用 权限

/dev/sda2            partition 10485756 12 -1

[root@vmsX ~]# swapoff dev/sda2

[root@vmsX ~]# sed -i ‘/swap/s/UUID/#UUID/g’ /etc/fstab

步骤4:在所有节点上配置好yum源(请提前安装好wget,再执行下面的操作)。

[root@vmsX ~]# rm -rf /etc/yum.repos.d/* ; wget -P /etc/yum.repos.d/ ftp://ftp.rhce.cc/k8s/*

–2021-04-11 15:57:05–  ftp://ftp.rhce.cc/k8s/*

=> “/etc/yum.repos.d/.listing”

[root@vmsX ~]#

步骤5:在所有节点安装并启动docker,并设置docker自动启动。

yum install docker-ce -y

systemctl enable docker –now

步骤6:在所有节点设置内核参数。

[root@vmsX ~]# cat <  /etc/sysctl.d/k8s.conf

net.bridge.bridge-nf-call-ip6tables = 1

net.bridge.bridge-nf-call-iptables = 1

net.ipv4.ip_forward = 1

EOF

[root@vmsX ~]#

让其立即生效:

[root@vmsX ~]# sysctl -p  /etc/sysctl.d/k8s.conf

[root@vmsX ~]#

注意:如果发现如如1-2所示的错误。

图1-2 加载模块报错

则通过modprobe br_netfilter解决问题。

基本上,先安装docker并启动docker,再修改参数是不会出现上述问题的。

步骤7:在所有节点上安装软件包。

[root@vmsX ~]# yum install -y kubelet-1.21.0-0 kubeadm-1.21.0-0 kubectl-1.21.0-0  –disableexcludes=kubernetes

已加载插件:fastestmirror

……

更新完毕:

yum.noarch 0:3.4.3-167.el7.centos

完毕!

[root@vms10 ~]#注意:安装时如果没有指定版本则安装的最新版本。

步骤8:在所有节点上启动kubelet,并设置开机自动启动。

[root@vmsX ~]# systemctl restart kubelet ; systemctl enable kubelet

Created symlink from /etc/systemd/system/multi-user.target.wants/kubelet.service to /usr/lib/systemd/system/kubelet.service.

[root@vmsX ~]#

注意:此时kubelet的状态为activating

1.3 安装master

下面的操作是在vms10上做的,目的是把vms10配置成master。

步骤1:在master上执行初始化。

[root@vms10 ~]# kubeadm init –image-repository registry.aliyuncs.com/google_containers –kubernetes-version=v1.21.0 –pod-network-cidr=10.244.0.0/16

…输出…

Then you can join any number of worker nodes by running the following on each as root:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Alternatively, if you are the root user, you can run:

export KUBECONFIG=/etc/kubernetes/admin.conf

…输出…

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.26.10:6443 –token nty5vx.vy3l3lamlm5knrby \

–discovery-token-ca-cert-hash sha256:bb2059cbe3d51ae9cf914db3298a4a9b468e539ed57a6f9d9dcb19d50bb5a93d

[root@vms10 ~]#

上面输出提示安装完之后要干嘛,按上面的提示分别执行每条命令。

注意1:这里用–image-repository选项指定使用阿里云的镜像。

注意2:–pod-network-cidr=10.244.0.0/16 #这里指的是pod的网段。

注意3:如果想安装其他版本的话,直接在–kubernetes-version里指定。

kubeadm init –image-repository registry.aliyuncs.com/google_containers –kubernetes-version=v1.19.2 –pod-network-cidr=10.244.0.0/16。

(当然要先安装对应的kubelet的版本)

步骤2:复制kubeconfig文件。

[root@vms10 ~]# mkdir -p $HOME/.kube

[root@vms10 ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

[root@vms10 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

[root@vms10 ~]#

上面的提示中,kubeadm join 192.168.26.10:6443 –token 524g6o.cpzywevx4ojems69 \

–discovery-token-ca-cert-hash sha256:6b19ba9d3371c0ac474e8e70569dfc8ac93c76fd841ac8df025a43d49d8cd860

是用于node加入到kubernetes集群的命令,如果忘记了保存此命令的话,可以用如下命令获取:

[root@vms10 ~]# kubeadm token create –print-join-command

kubeadm join 192.168.26.10:6443 –token w6v53s.16xt8ssokjuswlzx     –discovery-token-ca-cert-hash sha256:6b19ba9d3371c0ac474e8e70569dfc8ac93c76fd841ac8df025a43d49d8cd860

[root@vms10 ~]#

1.4 配置node加入集群

下面的步骤是把node1和node2以worker的身份加入到kubernetes集群。

步骤1:在node11和node12分别执行。

[root@vmsX ~]# kubeadm join 192.168.26.10:6443 –token nty5vx.vy3l3lamlm5knrby –discovery-token-ca-cert-hash sha256:bb2059cbe3d51ae9cf914db3298a4a9b468e539ed57a6f9d9dcb19d50bb5a93d

[preflight] Running pre-flight checks

[WARNING Service-Kubelet]: kubelet service is not enabled, please run ‘systemctl enable kubelet.service’

…输出…

Run ‘kubectl get nodes’ on the master to see this node join the cluster.

[root@vmsX ~]#

步骤2:切换到master上,可以看到所有节点已经加入集群了。

[root@vms10 ~]# kubectl get nodes

NAME            STATUS     ROLES                  AGE     VERSION

vms10.rhce.cc   NotReady   control-plane,master        119s      v1.21.0

vms11.rhce.cc   NotReady                      19s       v1.21.0

vms12.rhce.cc   NotReady                      16s       v1.21.0

[root@vms10 ~]#

从这里可以看到所有节点的状态为NotReady,我们需要安装calico网络才能使得k8s正常工作。

1.5 安装calico网络

因为在整个kubernetes集群里,pod都是分布在不同的主机上的,为了实现这些pod的跨主机通信所以我们必须要安装CNI网络插件,这里选择calico网络。

步骤1:在master上下载配置calico网络的yaml。

[root@vms10 ~]# wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml

… 输出 …

[root@vms10 ~]#

步骤2:修改calico.yaml里的pod网段。

把calico.yaml里pod所在网段改成kubeadm init时选项–pod-network-cidr所指定的网段,

直接用vim编辑打开此文件查找192,按如下标记进行修改:

# no effect. This should fall within `–cluster-cidr`.

# – name: CALICO_IPV4POOL_CIDR

#   value: “192.168.0.0/16”

# Disable file logging so `kubectl logs` works.

– name: CALICO_DISABLE_FILE_LOGGING

value: “true”

把两个#及#后面的空格去掉,并把192.168.0.0/16改成10.244.0.0/16

# no effect. This should fall within `–cluster-cidr`.

– name: CALICO_IPV4POOL_CIDR

value: “10.244.0.0/16”

# Disable file logging so `kubectl logs` works.

– name: CALICO_DISABLE_FILE_LOGGING

value: “true”

改的时候请看清缩进关系,即这里的对齐关系。

步骤5:提前下载所需要的镜像。

查看此文件用哪些镜像:

[root@vms10 ~]# grep image calico.yaml

image: calico/cni:v3.14.0

image: calico/cni:v3.14.0

image: calico/pod2daemon-flexvol:v3.14.0

image: calico/node:v3.14.0

image: calico/kube-controllers:v3.14.0

[root@vms10 ~]#

在所有节点(包括master)上把这些镜像下载下来:

[root@vmsX ~]# for i in calico/cni:v3.14.0 calico/pod2daemon-flexvol:v3.14.0 calico/node:v3.14.0 calico/kube-controllers:v3.14.0 ; do docker pull $i ; done

…大量输出…

[root@vmsX ~]

步骤3:安装calico网络。

在master上执行如下命令:

[root@vms10 ~]# kubectl apply -f calico.yaml

…大量输出…

[root@vms10 ~]#

步骤4:验证结果。

再次在master上运行命令 kubectl get nodes查看运行结果:

[root@vms10 ~]# kubectl get nodes

NAME         STATUS   ROLES                    AGE     VERSION

vms10.rhce.cc   Ready    control-plane,master        3m27s    v1.21.0

vms11.rhce.cc   Ready                       107s      v1.21.0

vms12.rhce.cc   Ready                       104s      v1.21.0

[root@vms10 ~]#

可以看到所有节点的状态已经变为是Ready了。

4月18日 CKA开课,咨询微信

上一篇:北交所董事长徐明谈下一步建设发展思路:四个维度理解服务“主阵地”
下一篇:证券开户二维码违规使用首例遭处罚!首创证券一营业部被监管警示
相关文章

 发表评论

暂时没有评论,来抢沙发吧~