Administrar el complemento kube-proxy - Amazon EKS

Administrar el complemento kube-proxy

Kube-proxy mantiene las reglas de red en cada nodo de Amazon EC2. Permite la comunicación de red a sus pods. Kube-proxy no se implementa en nodos de Fargate. Para obtener más información, consulte kube-proxy en la documentación del Kubernetes. Existen dos tipos de imagen kube-proxy disponible para cada versión de Kubernetes:

  • Predeterminada: este tipo se implementa de forma predeterminada con nuevos clústeres. Este es el único tipo que puede utilizar con el complemento de Amazon EKS para la versión de clúster 1.22 y anteriores.

  • Mínima: a diferencia del tipo predeterminado, este tipo de imagen se basa en una imagen base mínima mantenida por Amazon EKS Distro, que contiene los paquetes mínimos y no tiene shells. Para obtener más información, consulte ¿Qué es Amazon EKS Distro? Este tipo está disponible como complemento autoadministrado. También está disponible como complemento de Amazon EKS para la versión 1.23 y clústeres posteriores, pero no está disponible como complemento de Amazon EKS para la versión 1.22 y clústeres anteriores. Si decide instalar este tipo como complemento autoadministrado, en la versión 1.22 y clústeres anteriores, siga los pasos que se indican en Actualizar el complemento autoadministrado kube-proxy, especificando la última versión del tipo mínimo en la tabla siguiente. Este tipo se agrega de forma predeterminada a cualquier nuevo clúster 1.23 y clústeres posteriores. Si actualiza un clúster existente a la versión 1.23, puede agregar el complemento de Amazon EKS a su clúster, o actualizar su complemento de Amazon EKS a este tipo.

La última versión de kube-proxy disponible de cada versión de clúster de Amazon EKS
Image type (Tipo de imagen) 1.23 1.22 1.21 1.20 1.19 1.18
kube-proxy (tipo predeterminado) No disponible 1.22.11-eksbuild.2 1.21.14-eksbuild.2 1.20.15-eksbuild.2 1.19.16-eksbuild.2 1.18.8-eksbuild.1
kube-proxy (tipo mínimo) 1.23.7-minimal-eksbuild.1 1.22.11-minimal-eksbuild.2 1.21.14-minimal-eksbuild.2 1.20.15-minimal-eksbuild.3 1.19.16-minimal-eksbuild.3 1.18.20-minimal-eksbuild.1

Si creó un clúster 1.18 o posterior mediante la AWS Management Console, Amazon EKS instaló el complemento como complemento de Amazon EKS. Si creó un clúster 1.17 o posterior usando cualquier herramienta, o creó un clúster 1.18 o posterior mediante cualquier herramienta distinta de la AWS Management Console, Amazon EKS instaló el complemento autoadministrado. Puede migrar el complemento autoadministrado al complemento de Amazon EKS mediante el procedimiento de Agregar el complemento kube-proxy de Amazon EKS. Si tiene un clúster al que ya ha agregado el complemento kube-proxy, puede administrarlo mediante los procedimientos de las secciones Actualizar el complemento kube-proxy de Amazon EKS y Eliminar el complemento kube-proxy de Amazon EKS. Para obtener más información sobre los complementos de Amazon EKS, consulte Complementos de Amazon EKS.

Si no ha agregado el complemento kube-proxy de Amazon EKS, el complemento autoadministrado kube-proxy todavía se está ejecutando en el clúster. Puede actualizar de forma manual el complemento autoadministrado de kube-proxy mediante el procedimiento de Actualizar el complemento autoadministrado kube-proxy.

Amazon EKS tiene la misma compatibilidad y política de sesgo como Kubernetes para kube-proxy. Kube-proxy debe cumplir los siguientes requisitos:

  • Debe ser la misma versión secundaria que kubelet en el nodo.

  • No debe ser más reciente que la versión del plano de control de su clúster.

  • Su versión no puede ser anterior a dos versiones secundarias de su plano de control. Por ejemplo, si el plano de control está ejecutando Kubernetes 1.23, entonces, la versión secundaria kube-proxy no puede ser anterior a 1.21.

Requisitos previos

  • Un clúster de Amazon EKS existente. Para implementar uno, consulte Introducción a Amazon EKS.

  • Si su clúster es 1.21 o posterior, asegúrese de que su Amazon VPC y los complementos CoreDNS se encuentran en las versiones mínimas enumeradas en Tokens de cuenta de servicio.

Agregar el complemento kube-proxy de Amazon EKS

Puede agregar el complemento kube-proxy de Amazon EKS al clúster usando eksctl, la AWS Management Console o la AWS CLI.

importante

Antes de agregar el complemento kube-proxy de Amazon EKS, confirme que no administra por su cuenta ninguna configuración que Amazon EKS comenzará a administrar. Para determinar qué configuración administra Amazon EKS, consulte Configuración del complemento de Amazon EKS.

eksctl

Para agregar el complemento kube-proxy de Amazon EKS con eksctl

Reemplace my-cluster con el nombre de su clúster y, a continuación, ejecute el siguiente comando. Eksctl agrega la versión más reciente del complemento que está disponible para la versión de su clúster.

eksctl create addon --name kube-proxy --cluster my-cluster --force

Si quita la opción --force y cualquiera de las configuraciones del complemento de Amazon EKS entran en conflicto con la configuración existente, se produce un error al agregar el complemento de Amazon EKS y recibe un mensaje de error para ayudarlo a resolver el conflicto. Antes de especificar esta opción, asegúrese de que el complemento de Amazon EKS no administra la configuración que necesita administrar, ya que dicha configuración se sobrescribe con esta opción. Para obtener más información sobre la administración de la configuración de complementos de Amazon EKS, consulte Configuración del complemento de Amazon EKS.

AWS Management Console

Para agregar el complemento kube-proxy de Amazon EKS con la AWS Management Console

  1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. En el panel de navegación izquierdo, seleccione Clusters (Clústeres) y, a continuación, seleccione el nombre del clúster para el que desea configurar el complemento kube-proxy de Amazon EKS.

  3. Elija la pestaña Add-ons (Complementos).

  4. Seleccione Add new (Agregar nuevo).

    1. Seleccione kube-proxy en Name (Nombre).

    2. Seleccione la Version (Versión) que desea utilizar. Seleccione la versión marcada como Latest (Más reciente).

    3. Si selecciona Override existing configuration for this add-on on the cluster. (Anule la configuración existente para este complemento en el clúster.), cualquier configuración del complemento existente se puede sobrescribir con la configuración del complemento de Amazon EKS. Si no habilita esta opción y cualquiera de las configuraciones del complemento de Amazon EKS entran en conflicto con la configuración existente, se produce un error al agregar el complemento de Amazon EKS y recibe un mensaje de error para ayudarlo a resolver el conflicto. Antes de seleccionar esta opción, asegúrese de que el complemento de Amazon EKS no administra la configuración que necesita administrar. Para obtener más información sobre la administración de la configuración de complementos de Amazon EKS, consulte Configuración del complemento de Amazon EKS.

    4. Seleccione Add (Agregar).

AWS CLI

Para agregar el complemento kube-proxy de Amazon EKS con la AWS CLI

Cree el complemento. Reemplace my-cluster con el nombre de su clúster y 1.23.7-minimal-eksbuild.1 con la versión más reciente del clúster de la tabla de versiones más recientes.

aws eks create-addon --cluster-name my-cluster --addon-name kube-proxy --addon-version v1.23.7-minimal-eksbuild.1 --resolve-conflicts OVERWRITE

Si quita la opción --resolve-conflicts OVERWRITE y cualquiera de las configuraciones del complemento de Amazon EKS entran en conflicto con la configuración existente, se produce un error al crear el complemento y recibe un mensaje de error para ayudarlo a resolver el conflicto. Antes de especificar esta opción, asegúrese de que el complemento de Amazon EKS no administra la configuración que necesita administrar, ya que dicha configuración se sobrescribe con esta opción. Para obtener más información sobre la administración de la configuración de complementos de Amazon EKS, consulte Configuración del complemento de Amazon EKS.

Actualizar el complemento kube-proxy de Amazon EKS

Este procedimiento es para actualizar el complemento kube-proxy de Amazon EKS. Si no ha agregado el complemento kube-proxy de Amazon EKS, en su lugar complete el procedimiento en Actualizar el complemento autoadministrado kube-proxy. Amazon EKS no actualiza automáticamente kube-proxy en el clúster cuando se publican nuevas versiones o después de que actualice el clúster a una nueva versión secundaria de Kubernetes. Para actualizar el complemento kube-proxy en un clúster existente, debe iniciar la actualización y, a continuación, Amazon EKS actualiza el complemento en su nombre.

importante

Actualice el clúster y los nodos a una versión secundaria de Kubernetes nueva antes de actualizar kube-proxy a la misma versión secundaria que la versión secundaria del clúster actualizado.

eksctl

Para actualizar el complemento kube-proxy de Amazon EKS con eksctl

  1. Verifique la versión actual de su complemento kube-proxy de Amazon EKS. Reemplace my-cluster por el nombre de su clúster.

    eksctl get addon --name kube-proxy --cluster my-cluster

    El ejemplo de resultado es el siguiente.

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE kube-proxy v1.22.11-eksbuild.2 ACTIVE 0 v1.23.7-minimal-eksbuild.1
  2. Actualice el complemento a la versión devuelta en UPDATE AVAILABLE en el resultado del paso anterior.

    eksctl update addon \ --name kube-proxy \ --version v1.23.7-minimal-eksbuild.1 \ --cluster my-cluster \ --force

    Si quita la opción --force y cualquiera de las configuraciones del complemento de Amazon EKS entran en conflicto con la configuración existente, se produce un error al actualizar el complemento y recibe un mensaje de error para ayudarlo a resolver el conflicto. Antes de especificar esta opción, asegúrese de que el complemento de Amazon EKS no administra la configuración que necesita administrar, ya que dicha configuración se sobrescribe con esta opción. Para obtener más información sobre la administración de la configuración de complementos de Amazon EKS, consulte Configuración del complemento de Amazon EKS.

AWS Management Console

Para actualizar el complemento kube-proxy de Amazon EKS con la AWS Management Console

  1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. En el panel de navegación izquierdo, seleccione Clusters (Clústeres) y, a continuación, seleccione el nombre del clúster para el que desea actualizar el complemento kube-proxy de Amazon EKS.

  3. Elija la pestaña Add-ons (Complementos).

  4. Seleccione la casilla situada en la parte superior derecha del cuadro kube-proxy y, a continuación, elija Edit (Editar).

    1. Seleccione la Version (Versión) marcada como Latest (Más reciente).

    2. Si selecciona Override existing configuration for this add-on on the cluster. (Anule la configuración existente para este complemento en el clúster.), cualquier configuración del complemento existente se puede sobrescribir con la configuración del complemento de Amazon EKS. Si no habilita esta opción y cualquiera de las configuraciones del complemento de Amazon EKS entran en conflicto con la configuración existente, se produce un error al actualizar el complemento a un complemento de Amazon EKS y recibe un mensaje de error para ayudarlo a resolver el conflicto. Antes de seleccionar esta opción, asegúrese de que el complemento de Amazon EKS no administra la configuración que necesita administrar. Para obtener más información sobre la administración de la configuración de complementos de Amazon EKS, consulte Configuración del complemento de Amazon EKS.

    3. Seleccione Update (Actualizar).

AWS CLI

Para actualizar el complemento kube-proxy de Amazon EKS con la AWS CLI

  1. Verifique la versión actual de su complemento kube-proxy de Amazon EKS. Reemplace my-cluster por el nombre de su clúster.

    aws eks describe-addon --cluster-name my-cluster --addon-name kube-proxy --query "addon.addonVersion" --output text

    A continuación, se muestra un ejemplo de resultado.

    v1.22.11-eksbuild.2
  2. Determine qué versiones del complemento kube-proxy se encuentran disponibles para la versión de su clúster. Reemplace 1.23 por la versión del clúster.

    aws eks describe-addon-versions --addon-name kube-proxy --kubernetes-version 1.23 \ --query "addons[].addonVersions[].[addonVersion, compatibilities[].defaultVersion]" --output text

    A continuación, se muestra un ejemplo de resultado.

    v1.23.7-minimal-eksbuild.1 False v1.22.11-eksbuild.2 True ...

    La versión con True debajo es la versión predeterminada implementada con clústeres nuevos con la versión de Kubernetes que especificó.

  3. Actualice el complemento a la versión más reciente devuelta en la salida del paso anterior.

    aws eks update-addon --cluster-name my-cluster --addon-name kube-proxy --addon-version v1.23.7-minimal-eksbuild.1 --resolve-conflicts OVERWRITE

    Si quita la opción --resolve-conflicts OVERWRITE y cualquiera de las configuraciones del complemento de Amazon EKS entran en conflicto con la configuración existente, se produce un error al actualizar el complemento y recibe un mensaje de error para ayudarlo a resolver el conflicto. Antes de especificar esta opción, asegúrese de que el complemento de Amazon EKS no administra la configuración que necesita administrar, ya que dicha configuración se sobrescribe con esta opción. Para obtener más información sobre la administración de la configuración de complementos de Amazon EKS, consulte Configuración del complemento de Amazon EKS.

Eliminar el complemento kube-proxy de Amazon EKS

Tiene dos opciones al eliminar un complemento de Amazon EKS:

  • Conservar el software del complemento en el clúster: esta opción elimina la administración de Amazon EKS de cualquier configuración y la capacidad de Amazon EKS de notificarle las actualizaciones y actualizar automáticamente el complemento de Amazon EKS después de iniciar una actualización, pero conserva el software del complemento en su clúster. Esta opción hace que el complemento sea autoadministrado, en lugar de un complemento de Amazon EKS. No hay tiempo de inactividad para el complemento.

  • Eliminar por completo del clúster el software del complemento: solo debe eliminar del clúster el complemento de Amazon EKS si no hay recursos en el clúster que dependan de la funcionalidad que proporciona el complemento. Después de eliminar el complemento de Amazon EKS, puede agregarlo de nuevo si lo desea.

Si el complemento tiene una cuenta de IAM asociada, esta no se elimina.

Puede usar eksctl, la AWS Management Console o la AWS CLI para quitar el complemento de kube-proxy Amazon EKS de su clúster.

eksctl

Para eliminar el complemento kube-proxy de Amazon EKS con eksctl

Reemplace my-cluster por el nombre del clúster y, a continuación, ejecute el siguiente comando. Al eliminar --preserve, se elimina el software de complemento del clúster.

eksctl delete addon --cluster my-cluster --name kube-proxy --preserve
AWS Management Console

Para eliminar el complemento kube-proxy de Amazon EKS con la AWS Management Console

  1. Abra la consola de Amazon EKS en https://console.aws.amazon.com/eks/home#/clusters.

  2. En el panel de navegación izquierdo, seleccione Clusters (Clústeres) y, a continuación, seleccione el nombre del clúster para el que desea eliminar el complemento kube-proxy de Amazon EKS.

  3. Elija la pestaña Add-ons (Complementos).

  4. Seleccione la casilla de verificación situada en la parte superior derecha del cuadro kube-proxy y, a continuación, elija Remove (Eliminar). El tipo kube-proxy y luego seleccione Remove (Eliminar).

AWS CLI

Para eliminar el complemento kube-proxy de Amazon EKS con la AWS CLI

Reemplace my-cluster por el nombre del clúster y, a continuación, ejecute el siguiente comando. Al eliminar --preserve, se elimina el software de complemento del clúster.

aws eks delete-addon --cluster-name my-cluster --addon-name kube-proxy --preserve

Actualizar el complemento autoadministrado kube-proxy

Si tiene un clúster al que no ha agregado el complemento kube-proxy de Amazon EKS, siga los siguientes pasos para actualizar el complemento autoadministrado. Si ha agregado el complemento kube-proxy de Amazon EKS, en su lugar complete el procedimiento en Actualizar el complemento kube-proxy de Amazon EKS.

importante

Actualice el clúster y los nodos a una versión secundaria de Kubernetes nueva antes de actualizar kube-proxy a la misma versión secundaria que la versión secundaria del clúster actualizado.

Para actualizar el complemento autoadministrado kube-proxy con kubectl

  1. Verifique la versión actual de la implementación de kube-proxy.

    kubectl get daemonset kube-proxy --namespace kube-system -o=jsonpath='{$.spec.template.spec.containers[:1].image}'

    El ejemplo de resultado es el siguiente.

    602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.22.11-eksbuild.2
  2. Actualice el complemento kube-proxy, reemplace 602401143452 y region-code por los valores de la salida. Sustituya 1.22.11-eksbuild.2 por la versión de kube-proxy que aparece en la tabla Latest available kube-proxy version for each Amazon EKS cluster version (La versión de kube-proxy más reciente para cada versión de clúster de Amazon EKS) para encontrar la versión del clúster. Puede especificar el número de versión de tipo de imagen predeterminada o mínima.

    kubectl set image daemonset.apps/kube-proxy -n kube-system kube-proxy=602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.23.7-minimal-eksbuild.1
  3. Si utiliza nodos x86 y Arm en el mismo clúster y su clúster se implementó antes del 17 de agosto de 2020. A continuación, edite el manifiesto de kube-proxy a fin de incluir un selector de nodos para varias arquitecturas de hardware con el siguiente comando. Esta es una operación que se realiza una vez. Después de agregar el selector al manifiesto, no es necesario que lo agregue cada vez que realiza una actualización. Si el clúster se implementó a partir del 17 de agosto de 2020, kube-proxy ya cuenta con capacidad de varias arquitecturas.

    kubectl edit -n kube-system daemonset/kube-proxy

    Agregue el siguiente selector de nodos al archivo en el editor y guárdelo. Para ver un ejemplo de dónde incluir este texto en el editor, consulte el archivo de manifiesto de CNI en GitHub. Esto permite a Kubernetes extraer la imagen de hardware correcta según la arquitectura de hardware del nodo.

    - key: "kubernetes.io/arch" operator: In values: - amd64 - arm64
  4. Si su clúster se creó inicialmente con la versión de 1.14 Kubernetes o posterior, puede omitir este paso porque kube-proxy ya incluye esta Affinity Rule. Si creó inicialmente un clúster de Amazon EKS con versión 1.13 de Kubernetes o anterior y tiene la intención de utilizar nodos de Fargate, edite su manifiesto de kube-proxy para incluir una regla NodeAffinity a fin de evitar que los pods kube-proxy programen en los nodos de Fargate. Esta es una edición que se realiza una vez. Una vez que agrega la Affinity Rule al manifiesto, no es necesario que la agregue cada vez que realiza una actualización del clúster. Edite su kube-proxy DaemonSet.

    kubectl edit -n kube-system daemonset/kube-proxy

    Agregue la siguiente Affinity Rule a la sección DaemonSet spec del archivo en el editor y guárdelo. Para ver un ejemplo de dónde incluir este texto en el editor, consulte el archivo de manifiesto de CNI en GitHub.

    - key: eks.amazonaws.com/compute-type operator: NotIn values: - fargate