Trabajar con el complemento kube-proxy Kubernetes - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Desplácese hasta el final de esta página y seleccione Editar esta página en GitHub. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Trabajar con el complemento kube-proxy Kubernetes

importante

Recomendamos agregar el tipo de complemento de Amazon EKS al clúster en lugar de utilizar el tipo de complemento autoadministrado. Si no está familiarizado con la diferencia entre los tipos, consulte Complementos de Amazon EKS. Para obtener más información acerca de cómo agregar un complemento de Amazon EKS al clúster, consulte Creación de un complemento. Si no puede usar el complemento de Amazon EKS, le recomendamos que envíe una pregunta sobre los motivos por los que no puede hacerlo al repositorio de GitHub de la hoja de ruta de contenedores.

El complemento kube-proxy se implementa en cada nodo de Amazon EC2 del clúster de Amazon EKS. Mantiene las reglas de red en los nodos y permite la comunicación de red con los Pods. El complemento no se implementa en los nodos de Fargate del clúster. Para obtener más información, consulte kube-proxy en la documentación del Kubernetes.

En la siguiente tabla se muestra la versión más reciente del tipo de complemento de Amazon EKS para cada versión de Kubernetes.

Versión de Kubernetes 1.30 1.29 1.28 1.27 1.26 1.25 1.24 1.23
v1.30.0-eksbuild.3 v1.29.3-eksbuild.5 v1.28.8-eksbuild.5 v1.27.12-eksbuild.5 v1.26.15-eksbuild.5 v1.25.16-eksbuild.8 v1.24.17-eksbuild.8 v1.23.17-eksbuild.9
importante

Una versión anterior de la documentación era incorrecta. Las versiones v1.28.5, v1.27.9, y v1.26.12 de kube-proxy no están disponibles.

Si administra este complemento, es posible que las versiones de la tabla no sean las mismas que las versiones autoadministradas disponibles.

Existen dos tipos de imagen de contenedor kube-proxy disponibles para cada versión de clúster de Amazon EKS:

  • Predeterminado: este tipo de imagen se basa en una imagen de Docker basada en Debian y mantenida por la comunidad ascendente de Kubernetes.

  • Mínimo: este tipo se basa en una imagen de base mínima mantenida por Amazon EKS Distro, la cual contiene los paquetes mínimos y no tiene intérprete de comandos. Para obtener más información, consulte ¿Qué es Amazon EKS Distro?

Versión de imagen de contenedor de kube-proxy más reciente, autoadministrada y disponible para cada versión de clúster de Amazon EKS
Image type (Tipo de imagen) 1.30 1.29 1.28 1.27 1.26 1.25 1.24 1.23
kube-proxy (tipo predeterminado) Solo hay un tipo mínimo disponible Solo hay un tipo mínimo disponible Solo hay un tipo mínimo disponible Solo hay un tipo mínimo disponible Solo hay un tipo mínimo disponible Solo hay un tipo mínimo disponible v1.24.10-eksbuild.2 v1.23.16-eksbuild.2
kube-proxy (tipo mínimo) v1.30.0-minimal-eksbuild.3 v1.29.3-minimal-eksbuild.5 v1.28.8-minimal-eksbuild.5 v1.27.12-minimal-eksbuild.5 v1.26.15-minimal-eksbuild.5 v1.25.16-minimal-eksbuild.8 v1.24.17-minimal-eksbuild.4 v1.23.17-minimal-eksbuild.5
importante
  • El tipo de imagen predeterminado no está disponible para la versión Kubernetes de 1.25 y posteriores. Debe utilizar el tipo de imagen mínimo.

  • Cuando actualiza un tipo de complemento de Amazon EKS, especifica una versión de complemento de Amazon EKS válida, que puede ser una versión que no aparece en esta tabla. Esto se debe a que las versiones del complemento de Amazon EKS no siempre coinciden con las versiones de imágenes del contenedor especificadas al actualizar el tipo autoadministrado de este complemento. Al actualizar el tipo autoadministrado de este complemento, se especifica una versión válida de la imagen del contenedor que aparece en esta tabla.

Requisitos previos

Consideraciones
  • Kube-proxy en un clúster de Amazon EKS tiene la misma política de compatibilidad y sesgo que Kubernetes. Aprenda cómo Recuperación de la compatibilidad de las versiones del complemento.

  • Kube-proxy debe ser la misma versión secundaria que kubelet en los nodos de Amazon EC2.

  • El Kube-proxy no puede ser posterior a la versión secundaria del plano de control del clúster.

  • Si recientemente actualizó el clúster a una nueva versión secundaria de Kubernetes, actualice los nodos de Amazon EC2 a la misma versión secundaria antes de actualizar el kube-proxy a la misma versión secundaria que los nodos.

Para actualizar el complemento autoadministrado kube-proxy
  1. Confirme que tiene instalado en el clúster el tipo de complemento autoadministrado. 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

    Si se devuelve un mensaje de error, tiene el tipo de complemento autoadministrado instalado en el clúster. Los pasos restantes de este tema son para actualizar el tipo de complemento autoadministrado. Si se devuelve el número de versión, tiene el tipo de complemento de Amazon EKS instalado en el clúster. Para actualizarlo, siga el procedimiento que aparece en Actualización de un complemento, en lugar del procedimiento descrito en este tema. Si no está familiarizado con las diferencias entre los tipos de complementos, consulte Complementos de Amazon EKS.

  2. Consulte qué versión de la imagen del contenedor está instalada actualmente en el clúster.

    kubectl describe daemonset kube-proxy -n kube-system | grep Image

    Un ejemplo de salida sería el siguiente.

    Image:    602401143452.dkr.ecr.region-code.amazonaws.com/eks/kube-proxy:v1.29.1-eksbuild.2

    En el ejemplo de resultado, v1.29.1-eksbuild.2 es la versión instalada en el clúster.

  3. Actualice el complemento kube-proxy reemplazando 602401143452 y region-code por los valores de la salida en el paso anterior. Reemplace v1.30.0-eksbuild.3 por la versión de kube-proxy que aparece en la última versión autoadministrada disponible de la imagen del contenedor kube-proxy para cada tabla de versiones del clúster de Amazon EKS. 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.30.0-eksbuild.3

    Un ejemplo de salida sería el siguiente.

    daemonset.apps/kube-proxy image updated
  4. Confirme que la nueva versión ya esté instalada en el clúster.

    kubectl describe daemonset kube-proxy -n kube-system | grep Image | cut -d ":" -f 3

    Un ejemplo de salida sería el siguiente.

    v1.30.0-eksbuild.3
  5. 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 del complemento. 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
  6. 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. Después de agregar el Affinity Rule al manifiesto, no es necesario que lo agregue cada vez que realiza una actualización del complemento. 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