版本升级
k8s由于1.23 到1.24底层变了,所以本次示例以1.22升到1.23
升级Master节点 (在master节点执行)
腾空节点
kubectl drain master --ignore-daemonsets
升级kubeadm
yum install -y kubelet-1.23.17 kubeadm-1.23.17 kubectl-1.23.17
#重启服务
sudo systemctl daemon-reload
sudo systemctl restart kubelet
验证升级计划
kubeadm upgrade plan
下图为升级的版本核验,最下面的是他提供的命令,如果确定无误升级,复制粘贴执行即可
![](https://i-blog.csdnimg.cn/direct/846511b0fc094473b1e1efcb70a24ec2.png)
升级节点
kubeadm upgrade apply v1.23.17
解除节点保护
kubectl uncordon master
升级Node节点
腾空节点(在master节点执行)
kubectl drain node1 --ignore-daemonsets
升级kubeadm(在node1节点升级)
yum install -y kubelet-1.23.17 kubeadm-1.23.17 kubectl-1.23.17
sudo systemctl daemon-reload
sudo systemctl restart kubelet
升级节点(在node节点操作)
kubeadm upgrade node
回到master节点解除保护
kubectl uncordon node1
另一个node节点也是类似操作
更新证书
Kubernetes集群的ca证书默认是10年,其他证书的有效期是1年,当证书过期以后集群无法正常执行命令,所以需要更新证书。证书更新分为自动更新和手动更新,当集群升级的时候,证书会自动更新。这里我们主要说的是手动更新。
查看证书何时过期
kubeadm certs check-expiration
更新证书
#防止意外,备份一份证书
cp -r /etc/kubernetes /etc/kubernetes.old
#开始更新证书
kubeadm certs renew all
更新 ~/.kube/config 文件
mv ~/.kube/config ~/.kube/config.old
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
sudo chmod 644 $HOME/.kube/config
重启相关服务
docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "docker","restart",$1}' | bash
kubeadm certs check-expiration
Kuboard部署(可视化页面管理)
在所有节点上传文件kuboard-v3.yaml,与镜像包kuboard-v3-images.tar.gz
#加载镜像
docker load < kuboard-v3-images.tar.gz
kubectl apply -f kuboard-v3.yaml
kubectl get pods -n kuboard
部署Kuboard
修改镜像拉取策略
sed -i 's/ imagePullPolicy: Always/ imagePullPolicy: IfNotPresent/g' kuboard-v3.yaml
修改拉取策略
# 执行该命令 ,/imagePullPolicy 搜索 修改 imagePullPolicy 值为IfNotPresent
kubectl edit deployment -n kuboard kuboard-agent
![](https://i-blog.csdnimg.cn/direct/63c8fd8898d04af2a60466bd3d946aba.jpeg)
修改拉取策略
kubectl edit deployment -n kuboard kuboard-agent-2
![](https://i-blog.csdnimg.cn/direct/1d86b5300f7d4c34a0acc1b54a47e8a1.jpeg)
# 部署
kubectl apply -f kuboard-v3.yaml
# 查看dashboard的状态
kubectl get pods -n kuboard
# 查看dashboard前端的service
kubectl get svc -n kuboard
[root@master ~]# kubectl get svc -n kuboard
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kuboard-v3 NodePort 10.1.236.103 <none> 80:30080/TCP,10081:30081/TCP,10081:30081/UDP 4m42s
访问
浏览器访问++++h++++ ++++ttps://<Kubernetes++++集群任意节点的IP>:30080
用户名: admin
密码: Kuboard123
![](https://i-blog.csdnimg.cn/direct/072aa99c5bbc4680a2abf04822c2ac01.png)
![](https://i-blog.csdnimg.cn/direct/81b2546cbd1349fa90b9509c6a8c0f36.png)
-
- 操作集群
![](https://i-blog.csdnimg.cn/direct/6bb6e3058cab4a1da1249cbabc741b5c.png)
-
- 自由探索
可以在里面创建Pod或者Deployment等等之类的资源
以下是一个创建Deployment的流程
![](https://i-blog.csdnimg.cn/direct/1502461cc3ac4af4bdba15b690dd045c.png)
![](https://i-blog.csdnimg.cn/direct/0d9d91e3519f4390ad6ca56cee125c95.png)
![](https://i-blog.csdnimg.cn/direct/715f7166208f4b8aa09437e034834444.png)
这里面提供了yaml文件我们可以复制出来,也可以直接点击应用部署
![](https://i-blog.csdnimg.cn/direct/de1294beb49640a1bc7e925cbfeb6570.png)
![](https://i-blog.csdnimg.cn/direct/7913b82e1aea4dd0a40f35636aa1592b.png)
![](https://i-blog.csdnimg.cn/direct/cc72561ebf4c44e78d0fad75abf0f90b.png)
部署好以后,也可以去Kubernetes集群里面使用命令查看到刚才部署的
[root@master ~]# kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
test-nginx 1/1 1 1 86s
[root@master ~]# kubectl get pod
NAME READY STATUS RESTARTS AGE
test-nginx-bd5d678d5-p29pz 1/1 Running 0 89s