K8S Troubleshooting 经验集

Pod问题定位流程

1.查看pod详情

kubectl describe po --namespace <namespace> <pod name>

一般比如configmap/secret/pvc等问题都可以在pod详情这里初步定位到。需要注意的是,这里Event提示的内容不一定是最终导致pod起不来的结果,有可能是之前的log,现在已经修复的了。

2.查看pod日志

kubectl logs --namespace <namespace> <pod name> -c <container name>

如果是pod中的某个container起不来,可以通过查看对应container的log定位问题。

如果log中定位不到问题,那么可能就需要进入到pod里面看问题了。此时,可以先把其中container执行的command修改为sleep命令,等container起来以后,再执行原来的命令,一步一步定位问题。

可以通过edit deployment来修改container的启动command:

kubectl edit deployment --namespace <namespace> <deployment name>

修改的内容:

containers:
- name: init-env
  command: ["sleep"]
  args:
    - "1000"

修改完后,等待pod重新创建后,就可以通过以下命令进入pod进一步排查问题

kubectl exec -it --namespace <namespace> <pod name> -c <container name> bash

3.查看节点状态

kubectl get nodes

如果出现cpu不足的情况,有可能是有节点down掉了,检查是否所有的节点都是Ready状态。

Pod常见问题

长时间处于Pending状态

通过describe命令查看pod详情,

kubectl describe pod --namespace <namespace> <pod name>

错误信息1:0/3 nodes are available: 3 node(s) didn’t match node selector.

  • 可能原因:node上没有pod定义selector对应的label。

  • 解决方法:检查node的label,确认没有selector对应的label后,给node添加label。

    检查node label的命令:

    kubectl get nodes --show-labels

    添加label的命令:

    kubectl label node <node name> <label entry>

错误信息2:0/4 nodes are available: 1 node(s) had no available volume zone, 2 Insufficient cpu, 3 Insufficient memory.

  • 可能原因:节点资源不足。

  • 解决方法:查看node详情,通过Allocatable和Allocated resources字段确认是否资源不足。如果确认是资源不足,资源该增就增;资源没得增就考虑调整replicas和resource request。

    查看node详情的命令:

    kubectl describe node <node name>

    • Allocatable: 表示此节点能
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值