¿Cómo puedo comprobar, escalar, eliminar o agotar mis nodos de trabajo en Amazon EKS?

5 minutos de lectura
0

He lanzado mis nodos de trabajo de Amazon Elastic Kubernetes Service (Amazon EKS) mediante eksctl o la consola de administración de AWS. Ahora quiero comprobar, escalar, drenar o eliminar mis nodos de trabajo.

Descripción breve

Complete los pasos de la sección correspondiente según sus necesidades:

  • Revise sus nodos de trabajo
  • Amplíe sus nodos de trabajo
  • Drene sus nodos de trabajo
  • Elimine sus nodos de trabajo

Resolución

Revise sus nodos de trabajo

Para enumerar los nodos de trabajo registrados en el plano de control de Amazon EKS, ejecute el siguiente comando:

kubectl get nodes -o wide

El resultado devuelve el nombre, la versión de Kubernetes, el sistema operativo y la dirección IP de los nodos de trabajo.

Para obtener información adicional sobre un único nodo de trabajo, ejecute el siguiente comando:

kubectl describe node/node_name

**Nota:**Sustituya node_name por su valor. Por ejemplo: ip-XX-XX-XX-XX.us-east-1.compute.internal

El resultado muestra más información sobre el nodo de trabajo, incluidas las etiquetas, las manchas, la información del sistema y el estado.

Amplíe sus nodos de trabajo

Nota: Si sus grupos de nodos aparecen en la consola de Amazon EKS, utilice un grupo de nodos administrado. De lo contrario, utilice un grupo de nodos no administrado.

(Opción 1) Para escalar sus nodos de trabajo gestionados o no gestionados mediante eksctl, ejecute el siguiente comando:

eksctl scale nodegroup --cluster=clusterName --nodes=desiredCount --name=nodegroupName

**Nota:Sustituya ClusterName, ** desiredCount, y NodeGroupName por sus valores.

-o-

(Opción 2) Para escalar sus nodos de trabajo gestionados sin eksctl, complete los pasos de la sección «Para editar la configuración de un grupo de nodos» de Actualización de un grupo de nodos administrado.

-o-

(Opción 3) Para escalar sus nodos de trabajo no administrados mediante AWS CloudFormation, complete los siguientes pasos:

1.Utilice una plantilla de CloudFormation para lanzar sus nodos de trabajo para Windows o Linux.

2.Modifique los parámetros NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize, o NodeAutoScalingGroupMaxSize en su pila de CloudFormation.

Drene sus nodos de trabajo

Importante: La acción de drenaje aísla el nodo de trabajo y le indica a Kubernetes que deje de programar cualquier pod nuevo en el nodo. Los pods que se ejecutan en el nodo objetivo se expulsan de los nodos de drenaje, lo que significa que los pods se detendrán. Tenga en cuenta el efecto que esto puede tener en su entorno de producción.

Puede drenar un grupo de nodos completo o un solo nodo de trabajo. Elija la opción adecuada.

(Opción 1) Vacíe todo el grupo de nodos:

Si usa eksctl para lanzar sus nodos de trabajo, ejecute el siguiente comando:

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName

**Nota:**Reemplace clusterName y nodegroupName por sus valores.

Para desacordonar el grupo de nodos, ejecute el siguiente comando:

eksctl drain nodegroup --cluster=clusterName --name=nodegroupName --undo

**Nota:**Reemplace clusterName y nodegroupName por sus valores.

Si no usa eksctl para lanzar sus nodos de trabajo, identifique y agote todos los nodos de una versión concreta de Kubernetes. Por ejemplo:

#!/bin/bash
K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
    echo "Draining $node"
    kubectl drain $node --ignore-daemonsets --delete-local-data
done

Para identificar y desacordonar todos los nodos de una versión concreta de Kubernetes, use el siguiente código:

#!/bin/bash
K8S_VERSION=1.18.8-eks-7c9bda
nodes=$(kubectl get nodes -o jsonpath="{.items[?(@.status.nodeInfo.kubeletVersion==\"v$K8S_VERSION\")].metadata.name}")
for node in ${nodes[@]}
do
    echo "Uncordon $node"
    kubectl uncordon $node
done

Nota: Para obtener la versión de su nodo de trabajo, ejecute el siguiente comando:

$ kubectl get nodes
NAME                                      STATUS   ROLES    AGE     VERSION
ip-XXX-XXX-XX-XXX.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda
ip-XXX-XXX-XX-XXX.ec2.internal            Ready    <none>   6d4h    v1.18.8-eks-7c9bda

Nota: El número de versión aparece en la columna VERSION.

(Opción 2) Vacíe un solo nodo de trabajo:

Si no usa eksctl para lanzar sus nodos de trabajo o solo quiere agotar un nodo específico, aísle correctamente su nodo de trabajo:

kubectl drain node_name --ignore-daemonsets

**Nota:**Sustituya node_name por su valor.

Para deshacer el aislamiento, ejecute el siguiente comando:

kubectl uncordon node_name

**Nota:**Sustituya node_name por su valor.

Para migrar sus aplicaciones existentes a un nuevo grupo de nodos de trabajo, consulte Migración a un nuevo grupo de nodos.

Elimine sus nodos de trabajo

Importante: La acción de eliminación es irrecuperable. Tenga en cuenta el impacto que esto puede tener en su entorno de producción.

Si usa eksctl, ejecute el siguiente comando:

eksctl delete nodegroup --cluster=clusterName --name=nodegroupName

Si tiene un grupo de nodos administrado, complete los pasos que se indican en Eliminar un grupo de nodos administrado.

Si tiene un grupo de nodos no administrado y ha lanzado sus nodos de trabajo con una plantilla de CloudFormation, elimine la pila de CloudFormation. Debe eliminar la pila que creó para su grupo de nodos para Windows o Linux.

Si tiene un grupo de nodos no administrado y no usó una plantilla de CloudFormation para lanzar sus nodos de trabajo, elimine el grupo de Auto Scaling para sus nodos de trabajo. O bien, termine la instancia directamente si no utilizó un grupo de Auto Scaling.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años