监控数据的可视化分析神器 Grafana 的告警实践
811
2022-10-24
安装kubernetes v1.21.0
1.1 实验拓扑图及环境
完成本章及后续的实验我们需要三台机器,1台master,2台worker,拓扑图及配置如图1-1所示。
图1-1 实验拓扑图
机器的配置如表格1-1所示。
表格1-1 练习环境主机名的设置
主机名 | IP地址 | 内存需求 | 操作系统版本 | 角色 |
vms10.rhce.cc | 192.168.26.10 | 4G | centos7.4 | master |
vms11.rhce.cc | 192.168.26.11 | 4G | centos7.4 | worker1 |
vms12.rhce.cc | 192.168.26.12 | 4G | centos7.4 | worker2 |
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 <
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
vms12.rhce.cc NotReady
[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
vms12.rhce.cc Ready
[root@vms10 ~]#
可以看到所有节点的状态已经变为是Ready了。
4月18日 CKA开课,咨询微信
发表评论
暂时没有评论,来抢沙发吧~