工作负载类 排查项四:挂载的存储卷与节点是否处于同一可用区 0/2 nodes are available: 2 node(s) had volume node affinity conflict. 存储卷与节点之间存在亲和性冲突,导致无法调度。 这是因为云硬盘不能跨可用区挂载到节点。例如云硬盘存储卷在可用区1,节点在可用区2,则会导致无法调度。 CCE中创建云硬盘存储卷,默认带有亲和性设置,如下所示。 kind: PersistentVolumeapiVersion: v1metadata:name: pvcc29bfac7efa340e6b8d6229d8a5372ac spec:... nodeAffinity:required:nodeSelectorTerms:matchExpressions:key: failuredomain.beta.kubernetes.io/zoneoperator: Invalues:cngz1a 解决方案: 重新创建存储卷,可用区选择与节点同一分区,或重新创建工作负载,存储卷选择自动分配。 排查项五:检查Pod污点容忍情况 0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate. 是因为节点打上了污点,不允许Pod调度到节点上。 查看节点的上污点的情况。如下则说明节点上存在污点。 $ kubectl describe node 192.168.0.37Name: 192.168.0.37...Taints: key1value1:NoSchedule... 在某些情况下,系统会自动给节点添加一个污点。当前内置的污点包括: node.kubernetes.io/notready:节点未准备好。 node.kubernetes.io/unreachable:节点控制器访问不到节点。 node.kubernetes.io/memorypressure:节点存在内存压力。 node.kubernetes.io/diskpressure:节点存在磁盘压力,此情况表明节点上用于存储镜像的磁盘空间已满,需要清理镜像,或扩容磁盘。 node.kubernetes.io/pidpressure:节点的 PID 压力,此情况下您可通过修改节点进程 ID数量上限kernel.pidmax进行解决。 node.kubernetes.io/networkunavailable:节点网络不可用。 node.kubernetes.io/unschedulable:节点不可调度。 node.cloudprovider.kubernetes.io/uninitialized:如果kubelet启动时指定了一个“外部”云平台驱动, 它将给当前节点添加一个污点将其标志为不可用。在cloudcontrollermanager初始化这个节点后,kubelet将删除这个污点。 解决方案: 要想把Pod调度到这个节点上,有两种方法: 若该污点为用户自行添加,可考虑删除节点上的污点。若该污点为系统自动添加,解决相应问题后污点会自动删除。 Pod的定义中容忍这个污点,如下所示。 apiVersion: v1kind: Podmetadata:name: nginxspec:containers:name: nginximage: nginx:alpinetolerations:key: "key1"operator: "Equal"value: "value1"effect: "NoSchedule
来自: