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

4 minutos de lectura
0

He utilizado eksctl o la Consola de administración de AWS para iniciar mis nodos de trabajo de Amazon Elastic Kubernetes Service (Amazon EKS). Ahora quiero comprobar, escalar, vaciar o eliminar mis nodos de trabajo.

Solución

Comprobación de los nodos de trabajo

Para generar un listado de 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 (SO) 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, los taints, 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.

Utilice uno de los siguientes métodos para escalar los nodos de trabajo.

Escalado de nodos de trabajo con eksctl

Para utilizar eksctl para escalar sus nodos de trabajo, administrados o no, ejecute el siguiente comando:

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

Nota: Sustituya clusterName, desiredCount y nodegroupName por sus valores.

Escalado de nodos de trabajo sin eksctl

Para escalar sus nodos de trabajo administrados sin eksctl, edite la configuración del grupo de nodos.

Escalado de nodos de trabajo con CloudFormation

Para escalar sus nodos de trabajo no administrados mediante AWS CloudFormation, siga estos pasos:

  1. Utilice una plantilla de CloudFormation para iniciar sus nodos de trabajo para Windows o Linux.
  2. Modifique los parámetros NodeAutoScalingGroupDesiredCapacity, NodeAutoScalingGroupMinSize o NodeAutoScalingGroupMaxSize en su pila de CloudFormation.

Vaciado de nodos de trabajo

Importante: La acción de vaciado aísla el nodo de trabajo, y Kubernetes deja de programar nuevos pods en el nodo. Los pods que se ejecutan en el nodo de destino se eliminan de los nodos de vaciado y se detienen.

Puede vaciar un grupo de nodos completo o un solo nodo de trabajo.

Vaciado de 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: Sustituya clusterName y nodegroupName por sus valores.

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

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

Nota: Sustituya clusterName y nodegroupName por sus valores.

Si no usa eksctl para iniciar sus nodos de trabajo, identifique y vacíe 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 vaciar 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. El número de versión aparece en la columna VERSION:

$ kubectl get nodesNAME                                      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

Vaciado de un único nodo de trabajo

Si no usa eksctl para iniciar sus nodos de trabajo o solo quiere vaciar un nodo concreto, aísle debidamente 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.

Si usa eksctl, ejecute el siguiente comando:

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

Si tiene un grupo de nodos administrado, siga los pasos que se indican en Eliminación de un grupo de nodos administrado de un clúster.

Si tiene un grupo de nodos no administrado y ha usado una plantilla de CloudFormation para iniciar los nodos de trabajo, elimine la pila. 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 ha usado una plantilla de CloudFormation para iniciar sus nodos de trabajo, elimine el grupo de escalamiento automático. Si no ha usado un grupo de escalamiento automático, termine la instancia directamente.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año