k8s学习-重启master与node节点

时间:2023-02-18 10:57:02

总结一次在工作中维护k8s集群,对master和node节点进行重启的操作

node节点重启

检查待驱逐node和该pod的情况

# 查看待驱逐node节点是否在集群中
kubectl get node -o wide|grep <node_ip>
#注:如有显示结果,则表示在集群中
# 查看待驱逐node上pod情况并记录
kubectl get pod --all-namespaces -o wide|grep <node_ip> > /home/backupfile/tmp/delete_node_`date +%Y%m%d`.log

对待驱逐node上业务pod进行驱除

#对node上业务pod进行驱逐
kubectl drain <node_ip> --delete-local-data --force --ignore-daemonsets
#确认node上业务pod是否都已驱逐
kubectl get pod --all-namespaces -o wide |grep <node_ip>
#注:若显示结果只有canal,fluentd-es,filebeat,kube-proxy,prometheus-node-exporter的pod存在,则说明已经驱逐完成
#逐一确认被驱逐pod是否已重新创建且状态为Running
kubectl get pod --all-namespaces|grep <pod_namespaces>|grep <pod_name>
#注:根据第一步中delete_node_`date +%Y%m%d`.log记录逐一确认被重新拉起的pod状态业务,pod_namespaces为记录中对应pod的namespaces,pod_name为记录中pod的name(因pod重新创建名字可能会改变,故此处pod_name取记录中名字前一部分即可,并配合拉起时间查看)

重启node节点

#重启
shutdown -r now
#重启后,将节点解除隔离
kubectl uncordon <node_ip>>
# 检查节点状态是ready
kubectl get nodes|grep <node_ip>
#检查pod
kubectl get pod --all-namespaces -o wide|grep <node_ip>

登录master节点测试pod是否在指定node节点运行

#编辑yaml文件,根据需求更改pod的name,并将nodeName后ip指定为目标节点ip,<node_ip>,<node_ip>
cp busybox.yml busybox_118.yaml
vim busybox_118.yaml
#修改name为 "busybox-test-118"
#指定节点nodeName为 "<node_ip>"
#启动测试pod,并查看是否能成功的在目的node上启动成功
kubectl apply -f busybox_118.yaml
kubectl get pod --all-namespaces -o wide|grep busybox-test-118
#测试完成后,删除测试pod,并查看是否能成功删除
kubectl delete pod busybox-test-118 -n default
kubectl get pod --all-namespaces -o wide|grep busybox-test-118

登录dashboard,检查集群状态是否异常

master节点操作

在master节点上查看信息

#检查服务状态
systemctl status docker
systemctl satus kubelet
#检查组件pod状态
kubectl get node -owide | grep ${master节点}
kubectl get pod -A -owide | grep -V “Running” | grep ${master节点}
#检查etcd服务状态
systemctl status etcd
#检查etcd集群的状态
etcdctl endpoint health \
--endpoints https://127.0.0.1:2379 \
--cert=/etc/calico/certs/cert.crt \
--key=/etc/calico/certs/key.pem \
--cacert=/etc/calico/certs/ca_cert.crt

备份etcd信息并关闭master节点

#备份etcd信息,使用备份脚本
crontab -l #通过查看计划任务,确认备份脚本
sh /opt/etcdbackup/etcdbackup.sh --plan daily \
--remote 10.214.1.10 >> /opt/etcdbackup/tecd-backup.log
(注意,不同集群的master该脚本中参数--remote 10.214.1.10不一样)
#关闭服务以及组件
systemctl stop etcd
systemctl stop docker
Systemctl stop kubelet

#关机
shutdown now -r

节点状态检查

#检查服务状态
systemctl status docker
systemctl satus kubelet
#检查组件pod状态
kubectl get node -owide | grep ${master节点}
kubectl get pod -A -owide | grep -V “Running” | grep ${master节点}
#检查etcd服务状态
systemctl status etcd
#检查etcd集群的状态
etcdctl endpoint health \
--endpoints https://127.0.0.1:2379 \
--cert=/etc/calico/certs/cert.crt \
--key=/etc/calico/certs/key.pem \
--cacert=/etc/calico/certs/ca_cert.crt

登录dashboard,检查集群状态