You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes Master节点周期性崩溃及kubelet服务异常求助

Kubernetes Master节点周期性崩溃排查与修复

核心问题定位

从现象和日志来看,问题根源集中在容器运行时网络未就绪(NetworkPluginNotReady),以及由此引发的kube-scheduler、kube-controller-manager、kube-proxy等核心组件启动失败,最终导致kube-apiserver(6443端口)服务中断。

分步修复方案

1. 解决容器运行时冲突与配置问题

你同时安装了Docker和containerd,两者可能抢占资源或导致Kubernetes运行时识别混乱,优先保留containerd作为Kubernetes的容器运行时:

  • 停止并禁用Docker服务:
    systemctl stop docker
    systemctl disable docker
    
  • 重启containerd确保正常运行:
    systemctl restart containerd
    
  • 验证kubelet是否正确指向containerd端点:
    编辑kubelet配置文件(通常为/var/lib/kubelet/config.yaml或/etc/kubernetes/kubelet.conf),确保以下配置存在:
    runtimeEndpoint: unix:///run/containerd/containerd.sock
    
  • 重启kubelet:
    systemctl restart kubelet
    

2. 部署CNI网络插件解决NetworkPluginNotReady错误

Kubernetes集群必须配置CNI网络插件才能让Pod正常通信,否则核心组件会因网络依赖失败而崩溃:

  • 选择符合你Kubernetes版本的CNI插件(如Calico、Flannel等),下载对应的部署yaml文件后执行:
    kubectl apply -f 插件部署文件名.yaml
    
  • 等待插件部署完成,验证节点网络状态:
    kubectl get nodes -o wide
    
    确认节点STATUS变为Ready。

3. 排查核心组件崩溃细节

查看崩溃组件的具体日志,定位启动失败原因:

  • 查看kube-scheduler日志:
    kubectl logs -n kube-system kube-scheduler-dt-control --previous
    
  • 查看kube-controller-manager日志:
    kubectl logs -n kube-system kube-controller-manager-dt-control --previous
    
  • 常见问题包括配置文件错误、证书失效、CPU/内存资源不足,根据日志提示针对性修复。

4. 验证kube-apiserver状态

6443端口连接被拒通常是apiserver崩溃导致,查看apiserver系统日志:

journalctl -u kube-apiserver -f

重点排查:6443端口是否被其他服务占用、证书文件权限是否正确(需对kube-apiserver进程可读)、节点内存是否充足(apiserver需要足够内存维持运行)。

验证修复效果

完成上述步骤后,执行以下命令确认集群状态:

kubectl get nodes
kubectl get pods -n kube-system

等待所有核心组件(coredns、kube-proxy、kube-scheduler、kube-controller-manager)状态变为Running,节点状态为Ready,此时集群可正常使用。

内容的提问来源于stack exchange,提问作者g.pickardou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:20:38