安装kubernetes v1.19.0

实验拓扑图及环境

file
file

实验准备

建议所有节点使用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.61 vms61.rhce.cc  vms61
192.168.26.62 vms62.rhce.cc  vms62
192.168.26.63 vms63.rhce.cc  vms63 
[root@vmsX ~]#

在所有节点上配置防火墙和关闭selinux

[root@vmsX ~]# firewall-cmd --get-default-zone 
trusted
[root@vmsX ~]# getenforce 
Disabled
[root@vmsX ~]#

在所有节点上关闭swap,并注释掉/etc/fstab里swap相关条目:
[root@vmsX ~]# swapon -s
文件名 类型 大小 已用 权限
/dev/sda2 partition 10485756 12 -1
[root@vmsX ~]# swapoff /dev/sda2
[root@vmsX ~]# sed -i '/swap/s/UUID/#UUID/g' /etc/fstab

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

[root@vmsX ~]# rm -rf /etc/yum.repos.d/* ; wget -P /etc/yum.repos.d/ ftp://ftp.rhce.cc/k8s/*
--2020-08-28 12:38:36--  ftp://ftp.rhce.cc/k8s/*
           => “/etc/yum.repos.d/.listing”
...
[root@vmsX ~]#
在所有节点安装并启动docker,并设置docker自动启动。
yum install docker -y
systemctl enable docker --now

在所有节点设置相关属性

[root@vmsX ~]# cat <<EOF >  /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 ~]#

注意:如果发现如下错误:
file
则通过modprobe br_netfilter解决问题。
基本上,先安装docker并启动docker,再修改参数是不会出现上述问题的。

在所有节点上安装软件包:

[root@vmsX ~]# yum install -y kubelet-1.19.0-0 kubeadm-1.19.0-0 kubectl-1.19.0-0  --disableexcludes=kubernetes
已加载插件:fastestmirror
......
更新完毕:                                                          

完毕!
[root@vmsX ~]#

注意:安装时如果没有指定版本则安装的最新版本。
在所有节点上启动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 ~]#

安装master
在安装过程中,可以通过—image-repository来指定镜像仓库:

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

但是在写本文档的时候,阿里云镜像里并没有k8s1.19的镜像,所以这里提前下载下来,并事先导入。
在所有节点上导入已经下载好的镜像:

[root@vms6X ~]# docker load -i k8s-1.19-img.tar 
    …大量输出…
[root@vms6X ~]#
[root@vms61 ~]# kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version=v1.19.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:

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

kubeadm join 192.168.26.61:6443 --token rzf4r7.y50x0r5zrrkvllao \
    --discovery-token-ca-cert-hash sha256:227bf56c53a225da581a414d2a15e6afa3e3b4e1b57553c0eedee843b158f177 
[root@vms61 ~]# 

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

[root@vms61 ~]# mkdir -p $HOME/.kube
[root@vms61~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@vms61 ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config
[root@vms61 ~]# 

上面的提示中,kubeadm join 192.168.26.61:6443 --token rzf4r7.y50x0r5zrrkvllao \
--discovery-token-ca-cert-hash sha256:227bf56c53a225da581a414d2a15e6afa3e3b4e1b57553c0eedee843b158f177
是用于node加入到kubernetes集群的命令,如果忘记了保存此命令的话,可以用如下命令获取:

[root@vms61 ~]# kubeadm token create --print-join-command 
......
kubeadm join 192.168.26.61:6443 --token q57xry.gxra4khr9hg5ylj0     --discovery-token-ca-cert-hash sha256:227bf56c53a225da581a414d2a15e6afa3e3b4e1b57553c0eedee843b158f177 [root@vms61 ~]# 

注意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.18.2 --pod-network-cidr=10.244.0.0/16
(当然要先安装对应的kubelet的版本)

配置node加入集群
在node11和node12分别执行

[root@vmsX ~]# kubeadm join 192.168.26.61:6443 --token q57xry.gxra4khr9hg5ylj0     --discovery-token-ca-cert-hash sha256:227bf56c53a225da581a414d2a15e6afa3e3b4e1b57553c0eedee843b158f177
[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 ~]#

切换到master上,可以看到所有节点已经加入集群了:
file
从这里可以看到所有节点的状态为NotReady,我们需要安装calico网络才能使得k8s正常工作。
安装calico网络
在master上下载配置calico网络的yaml

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

把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"

把两个#去掉

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"

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

查看此文件用哪些镜像:

[root@vms61 ~]# 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@vms61 ~]#

在所有节点(包括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 ~] 

在master上安装calico网络:

[root@vms61 ~]# kubectl apply -f calico.yaml
...大量输出...
[root@vms61 ~]#

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

[root@vms61 ~]# kubectl get nodes
NAME            STATUS   ROLES    AGE   VERSION
vms61.rhce.cc      Ready    master   19m    v1.19.0
vms62.rhce.cc      Ready    <none>   16m   v1.19.0
vms63.rhce.cc      Ready    <none>   16m   v1.19.0
[root@vms61 ~]#

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

第9期CKA 基于最新版kubernetes 1.19,详情咨询 微信扫描:
安装kubernetes v1.19.0

相关新闻

                                                                                                                                    RHCE9学习指南全部更新完成,点击阅读