K8S工程师必备问题排查指南

k -n taskon logs taskon-backend-golang-withlog-667dbd4468-rnbfb -p

查看上一个pod的日志,如果是异常结束的pod,很可能会在最后看到panic

其中 -p 是 previous



本文是对 K8S工程师必备问题排查指南学习与记录


Pod相关问题及排查


kubectl describe pod [pod_name] -n [namespace_name]


节点的taints和toleration是什么?请详细介绍


在Kubernetes中,节点的taints(容忍标记)和tolerations(容忍设置)是一种机制,用于控制Pod是否可以被调度到具有特定特征的节点上。它们为集群管理员提供了一种灵活的方式来限制Pod的调度,并确保Pod仅在满足特定条件的节点上运行。

Taints(容忍标记)
Taint是一种在节点上设置的标记,用于指示节点具有某些限制或特性。节点的taint可以包含三个主要属性:

  • Key(键):用于标识taint的唯一键名。
  • Value(值):用于对taint进行分类或进一步细分。
  • Effect(效果):定义了taint的效果,有三种选择:
    • NoSchedule(不调度):阻止任何新的Pod被调度到带有该taint的节点上。
    • PreferNoSchedule(优先不调度):尽量避免在带有该taint的节点上调度新的Pod,但并不是强制的。
    • NoExecute(不执行):从节点上驱逐已经存在的不符合taint的Pod。

通过设置节点的taint,可以阻止一些Pod调度到特定的节点上,或者通过优先级设置来减少Pod在特定节点上的调度。

Tolerations(容忍设置)
Toleration是应用于Pod的属性,用于指示Pod是否可以容忍节点上的特定taint。通过设置tolerations,可以使Pod在调度时选择那些带有匹配taint的节点。

每个Pod可以设置多个toleration规则,每个规则包含以下属性:

  • Key(键):指定匹配的taint的键名。
  • Value(值):指定匹配的taint的值。如果未设置值,则匹配任何值。
  • Effect(效果):指定容忍规则的效果,有三种选择:
    • NoSchedule(不调度):表示Pod可以容忍NoSchedule效果的taint。
    • PreferNoSchedule(优先不调度):表示Pod可以容忍PreferNoSchedule效果的taint。
    • NoExecute(不执行):表示Pod可以容忍NoExecute效果的taint。

当Pod具有与节点上taint匹配的toleration规则时,调度器将允许将Pod调度到带有匹配taint的节点上。

总结起来,taints和tolerations是一对机制,用于在Kubernetes集群中控制Pod的调度。taints定义了节点的特定特征,而tolerations允许Pod容忍节点上的特定taint。这使得管理员可以更精确地控制Pod的调度位置,以满足不同的需求和策略。


Node相关问题及排查



集群层面问题及排查