¿Cómo se juega? Kubernetes pods not creating or terminating

Soy nuevo en K8s así que tengo problemas para llegar al botón del problema. La semana pasada instalé un cluster con 1 master 2 nodos en centos con kum:

kubectl get nodes

NAME             STATUS   ROLES                  AGE    VERSION
ardl-k8latam01   Ready    control-plane,master   7d2h   v1.20.0
ardl-k8latam02   Ready                     7d2h   v1.20.0
ardl-k8latam03   Ready                     7d2h   v1.20.0

Al principio estaba funcionando bien, pero luego comenzó a fracasar después de empezar a trabajar con helm (no sé si está relacionado). Ahora no puedo ejecutar ninguna implementación y tengo muchas cápsulas en estado de "terminar" que nunca terminan. Aquí estoy tratando de aplicar kubectl apply -f https://k8s.io/examples/controllers/nginx-deployment.yaml como ejemplo:

[root@ardl-k8latam01 ~]# kubectl get all --all-namespaces
NAMESPACE     NAME                                          READY   STATUS        RESTARTS   AGE
default       pod/nginx-deployment-66b6c48dd5-2xt7b         1/1     Terminating   0          19h
default       pod/nginx-deployment-66b6c48dd5-5cttk         1/1     Terminating   0          19h
default       pod/nginx-deployment-66b6c48dd5-8bz2f         0/1     Pending       0          18h
default       pod/nginx-deployment-66b6c48dd5-dksqx         1/1     Terminating   0          19h
default       pod/nginx-deployment-66b6c48dd5-fj9kl         0/1     Pending       0          18h
default       pod/nginx-deployment-66b6c48dd5-j4hqv         0/1     Pending       0          18h
kube-system   pod/calico-kube-controllers-bcc6f659f-bgmkb   1/1     Running       0          18h
kube-system   pod/calico-kube-controllers-bcc6f659f-pksws   1/1     Terminating   0          7d21h
kube-system   pod/calico-node-fns6d                         0/1     Running       2          7d21h
kube-system   pod/calico-node-t854c                         1/1     Running       0          7d21h
kube-system   pod/calico-node-vbsdr                         1/1     Running       0          7d21h
kube-system   pod/coredns-74ff55c5b-gw8j2                   1/1     Running       1          18h
kube-system   pod/coredns-74ff55c5b-xhvqb                   1/1     Terminating   0          7d21h
kube-system   pod/coredns-74ff55c5b-xr9mb                   1/1     Terminating   0          7d21h
kube-system   pod/coredns-74ff55c5b-zhhkx                   1/1     Running       1          18h
kube-system   pod/etcd-ardl-k8latam01                       1/1     Running       2          7d21h
kube-system   pod/kube-apiserver-ardl-k8latam01             1/1     Running       4          7d21h
kube-system   pod/kube-controller-manager-ardl-k8latam01    1/1     Running       2          7d21h
kube-system   pod/kube-proxy-2lmpb                          1/1     Running       0          7d21h
kube-system   pod/kube-proxy-fchv8                          1/1     Running       2          7d21h
kube-system   pod/kube-proxy-xks7h                          1/1     Running       0          7d21h
kube-system   pod/kube-scheduler-ardl-k8latam01             1/1     Running       2          7d21h
kube-system   pod/metrics-server-68b849498d-6q74v           1/1     Terminating   0          7d20h
kube-system   pod/metrics-server-68b849498d-7lpz8           0/1     Pending       0          18h

NAMESPACE     NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       service/dashboardlb      ClusterIP   10.100.82.105           8001/TCP                 7d20h
default       service/kubernetes       ClusterIP   10.96.0.1               443/TCP                  7d21h
kube-system   service/kube-dns         ClusterIP   10.96.0.10              53/UDP,53/TCP,9153/TCP   7d21h
kube-system   service/metrics-server   ClusterIP   10.101.85.63            443/TCP                  7d20h

NAMESPACE     NAME                         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                 AGE
kube-system   daemonset.apps/calico-node   3         3         0       3            0           beta.kubernetes.io/os=linux   7d21h
kube-system   daemonset.apps/kube-proxy    3         3         1       3            1           kubernetes.io/os=linux        7d21h

NAMESPACE     NAME                                      READY   UP-TO-DATE   AVAILABLE   AGE
default       deployment.apps/nginx-deployment          0/3     3            0           18h
kube-system   deployment.apps/calico-kube-controllers   1/1     1            1           7d21h
kube-system   deployment.apps/coredns                   2/2     2            2           7d21h
kube-system   deployment.apps/metrics-server            0/1     1            0           7d20h

NAMESPACE     NAME                                                DESIRED   CURRENT   READY   AGE
default       replicaset.apps/nginx-deployment-66b6c48dd5         3         3         0       18h
kube-system   replicaset.apps/calico-kube-controllers-bcc6f659f   1         1         1       7d21h
kube-system   replicaset.apps/coredns-74ff55c5b                   2         2         2       7d21h
kube-system   replicaset.apps/metrics-server-68b849498d           1         1         0       7d20h

en cluster info dump I get:

==== START logs for container second-node of pod default/second-app-deployment-7f794d896f-q6zn5 ====
Request log error: the server rejected our request for an unknown reason (get pods second-app-deployment-7f794d896f-q6zn5)
==== END logs for container second-node of pod default/second-app-deployment-7f794d896f-q6zn5 ====

con describir:

[root@ardl-k8latam01 testwordpress]# kubectl describe pod nginx-deployment-66b6c48dd5-5cttk
Name:           nginx-deployment-66b6c48dd5-5cttk
Namespace:      default
Priority:       0
Node:           ardl-k8latam02/10.48.41.12
Start Time:     Fri, 18 Dec 2020 17:06:57 -0300
Labels:         app=nginx
                pod-template-hash=66b6c48dd5
Annotations:    
Status:         Pending
IP:
IPs:            
Controlled By:  ReplicaSet/nginx-deployment-66b6c48dd5
Containers:
  nginx:
    Container ID:
    Image:          nginx:1.14.2
    Image ID:
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Environment:    
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-9rnk6 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  default-token-9rnk6:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-9rnk6
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  
Tolerations:     node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type     Reason                  Age                   From               Message
  ----     ------                  ----                  ----               -------
  Warning  FailedCreatePodSandBox  22m                   kubelet            Failed to create pod **sandbox: rpc error: code = Unknown desc = [failed to set up sandbox container "044a2201b141e6679570d0f0ec3b1967b2a5bf0b230fa5058ed2bc6711eba55e" network for pod "nginx-deployment-66b6c48dd5-5cttk": networkPlugin cni failed to set up pod "nginx-deployment-66b6c48dd5-5cttk_default" network: error getting ClusterInformation: Get https://[10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: dial tcp 10.96.0.1:443: connect: no route to host, failed to clean up sandbox container "044a2201b141e6679570d0f0ec3b1967b2a5bf0b230fa5058ed2bc6711eba55e" network for pod "nginx-deployment-66b6c48dd5-5cttk": networkPlugin cni failed to teardown pod "nginx-deployment-66b6c48dd5-5cttk_default" network: error getting ClusterInformation: Get https://[10.96.0.1]:443/apis/crd.projectcalico.org/v1/clusterinformations/default: dial tcp 10.96.0.1:443: connect: no route to host]
  Normal   Scheduled               21m                   default-scheduler  Successfully assigne**d default/nginx-deployment-66b6c48dd5-5cttk to ardl-k8latam02
  Normal   SandboxChanged          2m27s (x93 over 22m)  kubelet            Pod sandbox changed, it will be killed and re-created.

También intenté reiniciar los nodos y el maestro pero nada cambió. Cuando intento "describir" una cápsula "Terminating" me dice que el pode no existe.

¿Mi problema está relacionado con el calico? ¿Cómo puedo ir en profundidad? Request log error: the server rejected our request for an unknown reason?
¿Cómo debería continuar la investigación?

Pregunta hecha hace 3 años, 5 meses, 3 días - Por pythonpirate


2 Respuestas:

  • El error que estás experimentando parece estar relacionado con el plugin de red Calico en tu cluster Kubernetes. El mensaje de error indica que hay un problema al establecer la red para el pod que estás intentando crear.

    Aquí hay algunas sugerencias para resolver este problema y continuar con la investigación:

    • Comprobación de la configuración de red:
    - Verifica que el plugin de red Calico está correctamente configurado y funcionando en tu cluster Kubernetes.
    • Asegúrate de que los nodos pueden comunicarse correctamente entre sí y con el servidor de Kubernetes.
    • Revisión de los logs:
    - Revisa los logs de los componentes de Calico (como los controladores de red) para encontrar posibles errores o problemas de configuración.
    • Examina también los logs de los nodos y del servidor de Kubernetes para ver si hay pistas adicionales sobre la causa del error.
    • Actualización de Calico:
    - Si estás utilizando una versión específica de Calico, considera actualizar a una versión más reciente que pueda solucionar posibles problemas conocidos.
    • Verifica la documentación de Calico para ver si hay instrucciones específicas para tu versión de Kubernetes.
    • Verificación de la conectividad de red:
    - Asegúrate de que los servicios de red necesarios para el correcto funcionamiento de Calico estén disponibles y funcionando.
    • Verifica la conectividad de red entre los nodos y el servidor de Kubernetes.
    • Investigación adicional:
    - En caso de que la información anterior no resuelva el problema, considera consultar en los foros de la comunidad de Kubernetes o en los canales de soporte de Calico para obtener ayuda adicional.
    • Puede ser útil proporcionar información detallada sobre tu configuración y los pasos que has seguido hasta el momento para facilitar a otros la identificación del problema.

    Espero que estas sugerencias te sean de ayuda para diagnosticar y resolver el problema con la creación y terminación de los pods en tu cluster Kubernetes. ¡Buena suerte!

    Respondida el Dec 20, 2020 a las 15:18 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Problema:

    Los pods no se crean ni terminan en el clúster de Kubernetes. Existen pods en estado "Terminating" que no pueden terminar.

    Causas posibles:

    Problemas de red: Los nodos no pueden comunicarse entre sí o con el maestro. Problemas de almacenamiento: El servidor de almacenamiento subyacente no está disponible o tiene problemas. Problemas de configuración: La configuración del clúster de Kubernetes es incorrecta (por ejemplo, problemas de red o de almacenamiento).

    Pasos para la solución de problemas:

    1. Verificar la conectividad de la red:

    Ejecuta kubectl get nodes para verificar que todos los nodos estén en estado Ready y tengan direcciones IP válidas. Ejecuta ping entre los nodos y el maestro para verificar la conectividad.

    2. Verificar el almacenamiento:

    Revisa los registros del servidor de almacenamiento (por ejemplo, etcd, Docker) para detectar errores. Intenta acceder al almacenamiento manualmente (por ejemplo, mediante kubectl exec para ejecutar comandos dentro de un pod).

    3. Verificar la configuración:

    Revisa la configuración de la red (por ejemplo, kubeadm init, kubeadm join) y el almacenamiento (por ejemplo, etcd.conf, Docker Storage Driver). Ejecuta kubectl describe node <node-name> para verificar que los nodos estén correctamente provisionados y tengan los recursos necesarios.

    4. Error de "Request log error":

    Este error puede indicar un problema con el componente de Kubernetes que maneja las solicitudes de API. Intenta reiniciar el componente afectado (por ejemplo, Kubelet, API Server).

    5. Calico:

    Verificar que el componente Calico está instalado y funcionando correctamente. Ejecuta kubectl get pods -n kube-system para verificar el estado de los pods de Calico. Revisa los registros de Calico (por ejemplo, journalctl -u calico-<strong>) para detectar errores.

    6. Otras comprobaciones:

    Verificar que los pods no estén en un estado de ciclo de vida (por ejemplo, Terminating). Revisa los recursos del clúster (por ejemplo, CPU, RAM) para detectar posibles problemas de agotamiento. Intenta eliminar y recrear los pods afectados para ver si se resuelve el problema.

    Nota:

    La causa específica del problema puede variar según la configuración del clúster y el entorno. Es importante abordar los posibles problemas de red, almacenamiento y configuración para garantizar la estabilidad del clúster.

    Respondida el Dec 20, 2020 a las 15:27 - por Gemini

    Votos positivos: 0 | Votos negativos: 0