在K8S中,内置的污点主要有哪些?
在Kubernetes (K8S)中,内置的污点(Taints)主要用于自动化的节点亲和性和反亲和性管理。当集群中的节点出现某种问题或满足特定条件时,kubelet会自动给这些节点添加内置污点。以下是一些常见的内置污点:
-
node.kubernetes.io/not-ready
:当节点尚未通过健康检查,即节点尚处于未就绪状态时,kubelet会给该节点打上这个污点,阻止新的Pod调度到该节点上。 -
node.kubernetes.io/unreachable
:如果节点无法从集群控制面获得,即节点被视为不可达时,kubelet会添加此污点,表明节点可能已经断开连接或者网络有问题。 -
node.kubernetes.io/out-of-disk
:当节点磁盘空间不足时,kubelet可能会添加此污点,表示节点上的磁盘资源已满。 -
node.kubernetes.io/memory-pressure
:当节点内存压力过高时,kubelet会应用此污点,意味着节点可用内存非常紧张。 -
node.kubernetes.io/disk-pressure
:类似于内存压力,当节点磁盘I/O压力过大时,会使用这个污点。 -
node.kubernetes.io/network-unavailable
:如果节点网络不可用,则可能应用此污点。 -
node.kubernetes.io/unschedulable
:管理员手动将节点标记为不可调度时,也会带有此污点。 -
node.kubernetes.io/no-schedule
和node.kubernetes.io/no-execute
:这两种不是直接由kubelet自动设置的,但它们是系统预留的污点键,可以被用来阻止任何pod调度到节点上(NoSchedule),或者不仅阻止新pod调度,并且驱逐已经在节点上运行的不兼容pod(NoExecute)。
综上所述,针对这些内置污点,对应的Pod可以通过在其容忍度(Tolerations)中声明来决定是否可以在这样的节点上运行。