版本升级
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
下图为升级的版本核验,最下面的是他提供的命令,如果确定无误升级,复制粘贴执行即可
升级节点
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
修改拉取策略
kubectl edit deployment -n kuboard kuboard-agent-2
# 部署
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
访问
浏览器访问https://<Kubernetes集群任意节点的IP>:30080
用户名: admin
密码: Kuboard123
可以在里面创建Pod或者Deployment等等之类的资源
以下是一个创建Deployment的流程
这里面提供了yaml文件我们可以复制出来,也可以直接点击应用部署
部署好以后,也可以去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