重启Kubernetes主节点后Worker节点NotReady的预防方案咨询
解决Kubernetes主节点重启后Worker节点NotReady的持久化方案
常见触发原因
- kubelet与kube-apiserver的连接依赖主节点证书或kubeconfig配置,主节点重启后可能出现证书过期、kubeconfig路径异常
- 主节点kube-proxy、etcd等组件重启后,Worker节点的网络插件(如flannel、calico)未自动恢复连接
- Worker节点kubelet服务未配置开机自启,或主节点重启后kubelet进程未重新发起连接
具体避免措施
1. 确保Worker节点kubelet服务开机自启
- 执行命令设置开机启动:
systemctl enable kubelet - 验证配置:
systemctl is-enabled kubelet,正常输出应为enabled
2. 优化kubelet连接配置
- 检查Worker节点kubeconfig文件(默认路径
/var/lib/kubelet/kubeconfig),确保apiserver地址使用主节点固定IP或域名,而非临时地址 - 查看kubelet配置文件(如
/var/lib/kubelet/config.yaml),确认staticPodPath、clusterDNS等参数配置正确,避免依赖主节点临时状态 - 在kubelet启动参数中添加
--kube-api-qps=100、--kube-api-burst=200,提升API请求并发数,缓解主节点重启后的连接拥堵
3. 保障网络插件自动恢复
- Calico插件:确保Calico-node DaemonSet的
restartPolicy设为Always,并配置存活探针和就绪探针,示例片段:livenessProbe: exec: command: - /usr/bin/calico-node - -felix-live periodSeconds: 10 initialDelaySeconds: 10 failureThreshold: 6 readinessProbe: exec: command: - /usr/bin/calico-node - -felix-ready periodSeconds: 10 - Flannel插件:设置flanneld服务开机自启:
systemctl enable flanneld,并确保/run/flannel/subnet.env能自动同步主节点网络配置
4. 主节点组件高可用配置(生产环境推荐)
- 部署多主节点集群,避免单主节点重启导致API服务中断
- 配置etcd集群高可用,确保主节点重启后etcd数据快速同步,Worker节点kubelet可正常获取集群状态
5. 定期检查并自动续期证书
- 主节点kube-apiserver、etcd等组件证书需保证有效期充足,或使用kubeadm自动续期:
kubeadm certs renew all - Worker节点kubelet证书同样配置自动续期,避免证书过期导致连接失败
内容的提问来源于stack exchange,提问作者Luis Enrique
相关产品推荐
相关产品推荐

