En esta entrada os traigo algunos de los comandos más útiles para la gestión de nodos en Kubernetes. Estos comandos te permitirán obtener información detallada sobre los nodos, programar y desprogramar pods, agregar etiquetas y restricciones así como realizar tareas de mantenimiento en los nodos.
Así que si eres un administrador de sistemas, un desarrollador o simplemente alguien interesado en aprender más sobre Kubernetes, estos comandos seguro que te serán de gran utilidad.
Listado de comandos
kubectl get nodes: Este comando se utiliza para obtener una lista de los nodos en el clúster de Kubernetes.
$ kubectl get nodes NAME STATUS ROLES AGE VERSION node-1 Ready <none> 5d v1.18.6 node-2 Ready <none> 5d v1.18.6
kubectl describe node [node-name]: Este comando se utiliza para obtener información detallada sobre un nodo en particular.
$ kubectl describe node node-1 Name: node-1 Roles: <none> Labels: beta.kubernetes.io/arch=amd64 beta.kubernetes.io/os=linux kubernetes.io/arch=amd64 kubernetes.io/hostname=node-1 kubernetes.io/os=linux Annotations: node.alpha.kubernetes.io/ttl=0 volumes.kubernetes.io/controller-managed-attach-detach=true ...
kubectl drain [node-name]: Este comando se utiliza para drenar un nodo antes de realizar tareas de mantenimiento. Drenar un nodo significa que se evita que se planifiquen nuevos pods en ese nodo y se eliminan los pods que ya se están ejecutando en ese nodo.
$ kubectl drain node-1 node/node-1 cordoned evicting pod "nginx-6d4cf8b94d-cwvhd" evicting pod "nginx-6d4cf8b94d-fkjtd" pod/nginx-6d4cf8b94d-cwvhd evicted pod/nginx-6d4cf8b94d-fkjtd evicted node/node-1 evicted
kubectl cordon [node-name]: Este comando se utiliza para evitar que se programen nuevos pods en un nodo en particular. Es útil cuando se desea realizar algún tipo de mantenimiento en el nodo, pero no se desea eliminar los pods que se están ejecutando actualmente.
$ kubectl cordon node-1 node/node-1 cordoned
kubectl uncordon [node-name]: Este comando se utiliza para restaurar la capacidad de programación de un nodo después de que se haya realizado el mantenimiento.
$ kubectl uncordon node-1 node/node-1 uncordoned
kubectl label nodes [node-name] [label-key]= [label-value]: Este comando se utiliza para agregar etiquetas a un nodo.
$ kubectl label nodes node-1 environment=production node/node-1 labeled
kubectl taint nodes [node-name] [taint-key]=[taint-effect]: Este comando se utiliza para aplicar una restricción a un nodo, lo que significa que solo se programarán pods que tengan la tolerancia adecuada.
$ kubectl taint nodes node-1 production=true:NoSchedule node/node-1 tainted
kubectl top node: Este comando se utiliza para obtener estadísticas de uso de recursos para los nodos del clúster.
$ kubectl top node NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% node-1 217m 10% 1431Mi 75% node-2 280m 14% 1429Mi 75%
kubectl edit node [node-name]: Este comando se utiliza para editar la configuración de un nodo en particular.
$ kubectl edit node node-1
kubectl delete node [node-name]: Este comando se utiliza para eliminar un nodo del clúster.
$ kubectl delete node node-1
Como siempre espero que os haya sido de utilidad y si queréis seguir aprendiendo sobre Kubernetes estaros atentos a próximas entradas ya que seguiré haciendo recopilatorios de comandos para la gestión de pods, namespaces, servicios, etc…
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.