云容器引擎 CCE-工作负载异常:实例调度失败:排查项五:检查Pod污点容忍情况

时间:2024-05-20 10:01:17

排查项五:检查Pod污点容忍情况

0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate. 是因为节点打上了污点,不允许Pod调度到节点上。

查看节点的上污点的情况。如下则说明节点上存在污点。

$ kubectl describe node 192.168.0.37
Name:               192.168.0.37
...
Taints:             key1=value1:NoSchedule
...

在某些情况下,系统会自动给节点添加一个污点。当前内置的污点包括:

  • node.kubernetes.io/not-ready:节点未准备好。
  • node.kubernetes.io/unreachable:节点控制器访问不到节点。
  • node.kubernetes.io/memory-pressure:节点存在内存压力。
  • node.kubernetes.io/disk-pressure:节点存在磁盘压力,此情况下您可通过节点磁盘空间不足的方案进行解决。
  • node.kubernetes.io/pid-pressure:节点的 PID 压力,此情况下您可通过修改节点进程 ID数量上限kernel.pid_max进行解决。
  • node.kubernetes.io/network-unavailable:节点网络不可用。
  • node.kubernetes.io/unschedulable:节点不可调度。
  • node.cloudprovider.kubernetes.io/uninitialized:如果kubelet启动时指定了一个“外部”云平台驱动, 它将给当前节点添加一个污点将其标志为不可用。在cloud-controller-manager初始化这个节点后,kubelet将删除这个污点。

解决方案:

要想把Pod调度到这个节点上,有两种方法:

  • 若该污点为用户自行添加,可考虑删除节点上的污点。若该污点为系统自动添加,解决相应问题后污点会自动删除。
  • Pod的定义中容忍这个污点,如下所示。详细内容请参见污点和容忍
    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:alpine
      tolerations:
      - key: "key1"
        operator: "Equal"
        value: "value1"
        effect: "NoSchedule" 
support.huaweicloud.com/cce_faq/cce_faq_00098.html