El pod siempre está en estado Pendiente

El estado Pendiente indica que el Pod no se ha enviado a un determinado nodo. Debe observar el evento del Pod para determinar el motivo, por ejemplo :

Las posibles causas y soluciones se enumeran a continuación.

 

 

Los recursos del nodo no son suficientes


Los recursos del nodo son insuficientes en las siguientes situaciones:

  • Alta carga de CPU
  • No queda suficiente memoria para asignar
  • Número insuficiente de GPU disponibles restantes ( generalmente en escenarios de aprendizaje automático, entornos de clúster de GPU )
¿Cómo juzgar si un determinado recurso de Nodo es suficiente? Ver nodo a través de kubectl describe nodo <nombre-nodo>
Recursos, preste atención a la siguiente información:
  • Asignable : Indica la suma de recursos que este nodo puede solicitar
  • Recursos asignados : Indica los recursos asignados por este nodo (Asignables menos la Solicitud total de todos los Pods en el nodo )
Capacity:
  cpu:                2
  ephemeral-storage:  9217Mi
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             2031912Ki
  pods:               110

Allocatable:
  cpu:                1600m
  ephemeral-storage:  9217Mi
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             1452355993
  pods:               110

Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests    Limits
  --------           --------    ------
  cpu                350m (21%)  0 (0%)
  memory             70Mi (5%)   170Mi (12%)
  ephemeral-storage  0 (0%)      0 (0%)
  hugepages-1Gi      0 (0%)      0 (0%)
  hugepages-2Mi      0 (0%)      0 (0%)
El primero se resta del segundo para obtener los restantes recursos disponibles. Si este valor es menor que la solicitud del Pod, la solicitud del Pod no se satisface .
Requerimientos de recursos, el Programador eliminará este Nodo en la fase de Predicados (preselección) , y no será programado.

 

 

 

No cumple con nodeSelector y afinidad


Si el Pod contiene las etiquetas que el nodeSelector especifica que el nodo debe contener , el planificador solo considerará programar el Pod para el Nodo que contiene estas etiquetas . Si no hay ningún Nodo con estas etiquetas o el Nodo con estas etiquetas no cumple otras condiciones, no se podrá programar. . Consulte la documentación oficial: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector

Si el Pod contiene la configuración de afinidad , el programador también puede calcular que no hay Nodos que cumplan las condiciones según el algoritmo de programación, por lo que no se puede programar. Affinity tiene las siguientes categorías :
  • nodeAffinity: afinidad de nodos, que se puede considerar como una versión mejorada de nodeSelector , que se usa para restringir los pods para que solo se programen en una determinada parte de los nodos .
  • podAffinity: afinidad de Pod , que se utiliza para programar algunos Pods relacionados en el mismo lugar. El mismo lugar puede referirse al mismo nodo o nodos en la misma zona de disponibilidad.
  • podAntiAffinity: antiafinidad de pod, que se usa para evitar programar un determinado tipo de pod en el mismo lugar para evitar un único punto de falla , como programar las copias de pod del servicio DNS del clúster en diferentes nodos, para evitar que un nodo se cuelgue y provoque todo el análisis de DNS del clúster falló, interrumpiendo el negocio.

 

[root@master ~]# kubectl get pod -n kube-system -o wide
coredns-674d655c65-k8x88                  1/1     Running   0          19d     10.233.70.1       master   <none>           <none>
coredns-674d655c65-lg66w                  1/1     Running   0          6m11s   10.233.90.1       node1    <none>           <none>
coredns-674d655c65-v5hjn                  1/1     Running   0          19d     10.233.70.2       master   <none>           <none>


[root@master ~]# kubectl get pod -n kube-system --show-labels
coredns-674d655c65-k8x88                  1/1     Running   0          19d   k8s-app=kube-dns,pod-template-hash=674d655c65
coredns-674d655c65-lg66w                  1/1     Running   0          77s   k8s-app=kube-dns,pod-template-hash=674d655c65
coredns-674d655c65-v5hjn                  1/1     Running   0          19d   k8s-app=kube-dns,pod-template-hash=674d655c65



  template:
    metadata:
      creationTimestamp: null
      labels:
        k8s-app: kube-dns
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
          - labelSelector:
              matchLabels:
                k8s-app: kube-dns
            topologyKey: kubernetes.io/hostname


[root@master ~]# kubectl get pod -n kube-system -o wide
kube-system   coredns-76b666bbdb-kg8lp                  1/1     Running   0          64s   10.233.96.1       node2    <none>           <none>
kube-system   coredns-76b666bbdb-lzm2x                  1/1     Running   0          53s   10.233.70.4       master   <none>           <none>
kube-system   coredns-76b666bbdb-ptzw6                  1/1     Running   0          63s   10.233.90.2       node1    <none>           <none>

Supongo que te gusta

Origin blog.csdn.net/qq_34556414/article/details/123497248
Recomendado
Clasificación