【无标题】

【问题描述】

K8S集群中,出现大批量的pod为 非Running 状态,node节点为 No Ready

【问题排查】

1、查看K8S 集群pod的状态是否正常

kubectl get pod -A | grep -v Running

发现有大批量的pod为 非Running状态,初步判断是node节点故障或宕机导致的

查看具体pod非 Running状态的原因

kubectl describe pod pod-name-xxxxx -n namespace-xxx

2、查看K8S 集群node的状态

kubectl get node

发现 STATUS 中有 2个node节点为 No Ready

3、查看node节点上kubelet服务,并重启kubelet服务

systemctl status kubelet

systemctl restart kubelet

排查结果,node节点重启之后,kubelet 服务器重启,起不来,报:kubelet:server.go:failed to run Kubelet:unable to load bootstrap kubeconfig:stat /etc/kubernetes/bootstrap-kubelet

kubelet.service main process exited .Unit kubelet.service entered failed state. kubelet.service failed.

【问题分析】

node节点上大批量pod为非Running,是因为node节点上kubelet服务启动不正常导致的。重启kubelet服务失败,无法正常启动kubelet服务,是因为kubelet服务的kubelet客户端认证证书(kubelet-client-current.pem)丢失导致重启kubelet服务无法认证,即而服务无法启动

【解决方法】

mv /var/lib/kubelet/pki /var/lib/kubelet/pki.bak && cat ~/.kube/config > /etc/kubernetes/bootstrap-kubelet.conf && systemctl restart kubelet

~/ .kube/config :这个文件是k8s部署完之后,自动生成的

/etc/kubernetes/bootstrap-kubelet.conf :这个是TCE改造后的一个中间配置文件

systemctl restart kubelet :重启完 kubelet 这个服务之后,会自动生成 kubelet 客户端的认证证书 /var/lib/kubelet/pki/kubelet-client-current.pem

【附加问题】

node节点恢复正常后,还有个别pod不正常,查看具体pod非 Running状态的原因

kubectl describe pod pod-name-xxxxx -n namespace-xxx

warning(告警) FailedScheduling(调度失败) topology-spread-scheduler ,Message:0/9 node are available: 1 Insufficient(不充足、不够的) loopdevice.csi.infra.io/local.storage. 2 Insufficient cpu. 2 node … had volume node affinity conflict.

这个是node节点上CPU物理资源不足导致pod无法正常启动,处于pending状态。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值