Skip to content

Estado de salud de un cluster de Kubernetes

Dentro de las tareas administrativas en un cluster de Kubernetes, está la revisión de salud de todos los componentes importantes para que el cluster funcione adecuadamente, Los comandos/pasos enumerados en esta sección, se pueden usar para verificar los recursos de Kubernetes más importantes y aplicarlos a los clústeres de Kubernetes instalados por Rancher.

Laboratorio: Estado de salud de un cluster de Kubernetes

Descripción

El estudiante aprenderá a verificar el estado de salud del cluster de Kubernetes y sus componentes más importantes.

Objetivos

  • Verificar el estado de salud del cluster de Kubernetes
  • Verificar el estado de salud desde Rancher Server

Antes de comenzar

  • Contar con los accesos y permisos a nivel administrador en el cluster de Kubernetes y Rancher Server

Inicio de laboratorio

  1. Verifique que la conexión al cluster está funcionando correctamente
    kubectl version --output=yaml
    
  2. Verifique el estado de los servidores de componen el cluster
    kubectl get nodes
    
  3. Vista extendida de los nodos
    kubectl get nodes -o wide
    
  4. Verifique el consumo de recursos de hardware de todos los servidores del cluster
    kubectl top nodes
    
  5. Verifique el consumo de recursos de un servidor en particular
    kubectl top node (Node-Name)
    
  6. Revise la configuración de los nodos
    kubectl describe node (Node-Name)
    
  7. Ejecute el siguiente comando para listar nodos con Node Conditions
    kubectl get nodes -o go-template='{{range .items}}{{$node := .}}{{range .status.conditions}}{{$node.metadata.name}}{{": "}}{{.type}}{{":"}}{{.status}}{{"\n"}}{{end}}{{end}}'
    
  8. Revise los servicios principales en el Namespace KUBE-SYSTEM
    kubectl get pods -n kube-system
    
  9. Verifique que los PODS de cattle-cluster-agent estan presentes en el cluster, que se encuentran en estado Running y que no tienen una alta cantidad de reinicios:
    kubectl -n cattle-system get pods -l app=cattle-cluster-agent -o wide
    
  10. Verifique los logs de los PODS de cattle-cluster-agent:
    kubectl -n cattle-system logs -l app=cattle-cluster-agent
    
  11. El Ingress Controller predeterminado es NGINX y se implementa como DaemonSet en el Namespace ingress-nginx.
    kubectl -n ingress-nginx get pods -o wide
    
  12. Si un POD no se ejecuta correctamente (Su estado es: not Running, si su estado Ready no muestra: 1/1 o si se observan muchos reinicios), debe revisar los detalles del POD, logs y eventos del Namespace.
    kubectl -n ingress-nginx describe pods -l app=ingress-nginx
    
    kubectl -n ingress-nginx logs -l app=ingress-nginx
    
    kubectl -n ingress-nginx logs <pod name>
    
    kubectl -n ingress-nginx get events
    
  13. Puede revisar la configuración generada en cada POD del Ingress Controller
    kubectl -n ingress-nginx get pods -l app=ingress-nginx --no-headers -o custom-columns=.NAME:.metadata.name | while read pod; do kubectl -n ingress-nginx exec $pod -- cat /etc/nginx/nginx.conf; done
    
  14. Revise servicios complementarios que tenga instalados, como por ejemplo los siguientes:
    kubectl get pods -n cattle-logging-system
    
    kubectl get pods -n cattle-monitoring-system
    
    kubectl get pods -n longhorn-system
    
  15. Revise el estado de los recursos Deployments
    kubectl get deployments --all-namespaces
    
  16. Revise el estado de los recursos Deployments
    kubectl get deployments -n (Namespace)
    
  17. Verifique el estado de todos los pods, los cuales deebrían de esta en un estado Running/Completed:
    kubectl get pods -A
    
  18. Vista extendida de los pods
    kubectl get pods -A -o wide
    
  19. Revise el detalle de un POD como se muestra en el siguiente ejemplo:
    kubectl describe pod POD_NAME -n NAMESPACE
    
    kubectl describe pod metrics-server-55fdd84cd4-w7zhw -n kube-system
    
  20. Revise los logs de un POD como se muestra en el siguiente ejemplo:

    kubectl logs POD_NAME -n NAMESPACE
    
    kubectl logs metrics-server-55fdd84cd4-w7zhw -n kube-system
    
    kubectl logs -f metrics-server-55fdd84cd4-w7zhw -n kube-system
    
    Presione CTRL+C para salir.

  21. Verifique el estado de todos los pods qué se encuentran en estado diferente de “Running”

    kubectl get pods -A | grep -v Running | grep -v Completed
    

  22. Revise los PODS que se encuentran en estado Evicted:
    kubectl get pods --all-namespaces -o go-template='{{range .items}}{{if eq .status.phase "Failed"}}{{if eq .status.reason "Evicted"}}{{.metadata.name}}{{" "}}{{.metadata.namespace}}{{"\n"}}{{end}}{{end}}{{end}}'
    
  23. Verifique el consumo de recursos de los pods
    kubectl top pods -n (Namespace)
    
    kubectl top pods -n ingress-nginx
    
  24. Verifique los eventos de un Namespace
    kubectl get events -n (Namespace)
    
    kubectl get events -n ingress-nginx
    
  25. Verifique que los servicios de DNS estan ejecutándose correctamente:
    kubectl -n kube-system get pods -l k8s-app=kube-dns
    
  26. Verifique que el Servicio de DNS se encuentra presente y con el cluster-ip correctamente:
    kubectl -n kube-system get svc -l k8s-app=kube-dns
    
  27. Compruebe si los nombres de los clústeres internos se están resolviendo (en este ejemplo, kubernetes.default), la IP que se muestra después Server: debe ser la misma que la CLUSTER-IP del servicio kube-dns.
    kubectl run -it --rm --restart=Never busybox --image=busybox:1.28 -- nslookup kubernetes.default
    
  28. Compruebe si los nombres externos se están resolviendo correctamente (en este ejemplo, www.google.com)
    kubectl run -it --rm --restart=Never busybox --image=busybox:1.28 -- nslookup www.google.com
    
  29. Verifique los logs del servicio de DNS
    kubectl -n kube-system logs -l k8s-app=kube-dns
    
  30. Verifique la configuración del servicio DNS:
    kubectl -n kube-system get configmap coredns -o go-template={{.data.Corefile}}
    
    Nota: Verificar los comandos anteriores desde la Web Console de Rancher también en posible.