老师你好,我在本地虚拟机搭建了三个K8S节点,1 个master,两个worker,搭建是成功的


然后我发现一个现象,(PS:为了避免太多环境影响,我先不让work节点 join master节点),我在master节点这台机器上运行sync && reboot 重启,master节点的各种组件etcd,kube-api-server, kube-scheduler是没有什么问题的。
但是运行 sync && shutdown -h now 关机,再次开机的时候就发现K8S各种组件都不正常了 虽然都是显示running,但是ready为 0/1,查看日志也找不到什么明显的错误。

所以想请教一下老师,K8S一般怎样才能安全关机?
对于关机处理这里,我查了很多资料,试过很多组合,发现再次开机后都有问题
尝试一:
sync && shutdown -h now
尝试二:
kubectl drain kumaster --ignore-daemonsets --delete-emptydir-data
systemctl stop kubelet
sync
shutdown -h now
开机后执行kubectl uncordon kumaster
尝试三:
systemctl stop kubelet
sync
shutdown -h now
最后只试出来一种暂时能凑活,保证开机后K8S组件还算正常的方案,即:
kubectl drain kumaster --ignore-daemonsets --delete-emptydir-data
rm -rf /etc/kubernetes/manifests/* 把那些pod的yaml都删了,事先备份
systemctl stop kubelet.service
crictl stop {剩余容器}
sync && shutdown -h now 关机
开机就恢复yaml文件, 让K8S创建Pod
cp /etc/kubernetes/manifests-backup/* /etc/kubernetes/manifests/
感觉关机流程应该有问题,kubelet提前关了,然后crictl直接停了pod,也包括etcd自身的pod, 导致状态混乱。所以想请假下老师,关机时的正常流程应该是怎么样的?谢谢老师
搭建K8S集群,我安装的是1.33版本,容器运行时为containerd,也安装了runc,cni-plugin