Trabajar con el complemento Amazon VPC CNI plugin for Kubernetes de Amazon EKS - Amazon EKS

Trabajar con el complemento Amazon VPC CNI plugin for Kubernetes de Amazon EKS

El complemento Amazon VPC CNI plugin for Kubernetes se implementa en cada nodo de Amazon EC2 del clúster de Amazon EKS. El complemento crea interfaces de red elástica y las adjunta a los nodos de Amazon EC2. El complemento también asigna una dirección IPv4 o IPv6 privada de la VPC a cada Pod y servicio.

Se implementa una versión del complemento con cada nodo de Fargate del clúster, pero no se actualiza en los nodos de Fargate. Hay otros complementos de CNI compatibles disponibles para su uso en los clústeres de Amazon EKS, pero este es el único complemento de CNI compatible con Amazon EKS.

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

Versión de Kubernetes 1.29 1.28 1.27 1.26 1.25 1.24 1.23
Tipo de versión CNI de VPC de Amazon EKS v1.17.1-eksbuild.1 v1.17.1-eksbuild.1 v1.17.1-eksbuild.1 v1.17.1-eksbuild.1 v1.17.1-eksbuild.1 v1.17.1-eksbuild.1 v1.17.1-eksbuild.1
importante

Si administra este complemento, es posible que las versiones de la tabla no sean las mismas que las versiones autoadministradas disponibles. Para obtener más información acerca de la actualización de complementos autoadministrados, consulte Actualizar el complemento autoadministrado.

Requisitos previos
Consideraciones
  • Las versiones se especifican como major-version.minor-version.patch-version-eksbuild.build-number.

  • Comprobar la compatibilidad de versiones para cada característica

    Algunas características de cada versión de Amazon VPC CNI plugin for Kubernetes requieren determinadas versiones de Kubernetes. Cuando se utilizan distintas funciones de Amazon EKS, si se requiere una versión específica del complemento, se indica en la documentación de características. A menos que tenga un motivo específico para ejecutar una versión anterior, le recomendamos elegir la versión más reciente.

Creación del complemento de Amazon EKS

Cree el tipo de Amazon EKS del complemento.

  1. Consulte qué versión del complemento está instalada en el clúster.

    kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

    Un ejemplo de salida sería el siguiente.

    v1.12.6-eksbuild.2
  2. Consulte qué tipo del complemento está instalado en el clúster. Según la herramienta con la que haya creado el clúster, es posible que actualmente no tenga instalado el tipo de complemento Amazon EKS en el clúster. Reemplace my-cluster por el nombre de su clúster.

    $ aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query addon.addonVersion --output text

    Si se devuelve el número de versión, tiene el tipo de complemento de Amazon EKS instalado en el clúster y no es necesario que complete los pasos restantes del procedimiento. Si se devuelve un error, no tiene el tipo de complemento de Amazon EKS instalado en el clúster. Complete los pasos restantes de este procedimiento para instalarlo.

  3. Guarde la configuración del complemento instalado actualmente.

    kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
  4. Cree el complemento mediante el AWS CLI. Si desea utilizar AWS Management Console o eksctl para crear el complemento, consulteCreación de un complemento y especifiquevpc-cni para el nombre del complemento. Copie el comando que sigue en su dispositivo. Realice las siguientes modificaciones en el comando según sea necesario y, a continuación, ejecute el comando modificado.

    • Reemplace my-cluster por el nombre del clúster.

    • Reemplace v1.17.1-eksbuild.1 por la versión más reciente que aparece en la tabla de versiones más recientes de la versión de su clúster.

    • Reemplace 111122223333 por el ID de su cuenta y AmazonEKSVPCCNIRole por el nombre del rol de IAM existente que creó. Para especificar un rol, es necesario disponer de un proveedor de IAM OpenID Connect (OIDC) para el clúster. Para determinar si ya tiene uno para su clúster o si debe crearlo, consulte Creación de un proveedor de OIDC de IAM para su clúster.

    aws eks create-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.17.1-eksbuild.1 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole

    Si ha aplicado una configuración personalizada al complemento actual que entra en conflicto con la configuración predeterminada del complemento de Amazon EKS, es posible que se produzca un error en la creación. Si se produce un error en la creación, recibe un error que puede serle de utilidad para resolver el problema. Como alternativa, puede añadir --resolve-conflicts OVERWRITE al comando anterior. Esto permite que el complemento sobrescriba cualquier configuración personalizada existente. Una vez que haya creado el complemento, puede actualizarlo con la configuración personalizada.

  5. Confirme que la versión más reciente del complemento de la Kubernetes versión de su clúster se haya agregado al clúster. Reemplace my-cluster por el nombre del clúster.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query addon.addonVersion --output text

    Es posible que la creación del complemento tarde varios segundos en completarse.

    Un ejemplo de salida sería el siguiente.

    v1.17.1-eksbuild.1
  6. Si ha realizado ajustes personalizados en el complemento original, antes de crear el complemento de Amazon EKS, utilice la configuración que guardó en el paso anterior para actualizar el complemento de Amazon EKS con su configuración personalizada.

  7. (Opcional) Instale el cni-metrics-helper en su clúster. Extrae información de la interfaz de red elástica y la dirección IP, agrega métricas en todo el clúster y publica las métricas en Amazon CloudWatch. Para obtener más información, consulte cni-metrics-helper en GitHub.

Actualizar el complemento de Amazon EKS

Actualice el tipo de Amazon EKS del complemento. Si no ha agregado el tipo Amazon EKS del complemento al clúster, agréguelo o consulte Actualizar el complemento autoadministrado, en lugar de completar este procedimiento.

  1. Consulte qué versión del complemento está instalada en el clúster. Reemplace my-cluster por el nombre del clúster.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query "addon.addonVersion" --output text

    Un ejemplo de salida sería el siguiente.

    v1.12.6-eksbuild.2

    Si la versión devuelta es la misma que la versión Kubernetes del clúster en la tabla de versiones más recientes, significa que ya tiene la última versión instalada en el clúster y no necesita completar el resto de este procedimiento. Si recibe un error, en lugar de un número de versión en la salida, significa que no tiene el tipo de versión de Amazon EKS en el clúster. Debe crear el complemento antes de poder actualizarlo mediante este procedimiento.

  2. Guarde la configuración del complemento instalado actualmente.

    kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
  3. Actualice el complemento con la AWS CLI. Si desea utilizar AWS Management Console o eksctl para actualizar el complemento, consulte Actualización de un complemento. Copie el comando que sigue en su dispositivo. Realice las siguientes modificaciones en el comando según sea necesario y, a continuación, ejecute el comando modificado.

    • Reemplace my-cluster por el nombre del clúster.

    • Reemplace v1.17.1-eksbuild.1 por la versión más reciente que aparece en la tabla de versiones más recientes de la versión de su clúster.

    • Reemplace 111122223333 por el ID de su cuenta y AmazonEKSVPCCNIRole por el nombre del rol de IAM existente que creó. Para especificar un rol, es necesario disponer de un proveedor de IAM OpenID Connect (OIDC) para el clúster. Para determinar si ya tiene uno para su clúster o si debe crearlo, consulte Creación de un proveedor de OIDC de IAM para su clúster.

    • La opción CONSERVAR de --resolve-conflicts conserva los valores de configuración existentes del complemento. Si ha establecido valores personalizados para la configuración del complemento y no utiliza esta opción, Amazon EKS sobrescribe los valores con los valores predeterminados. Si utiliza esta opción, le recomendamos que pruebe cualquier cambio de campo y valor en un clúster que no sea de producción antes de actualizar el complemento del clúster de producción. Si cambia este valor a OVERWRITE, todas las configuraciones cambiarán a los valores predeterminados de Amazon EKS. Si ha establecido valores personalizados para cualquier configuración, es posible que se sobrescriban con los valores predeterminados de Amazon EKS. Si cambia este valor a none, Amazon EKS no cambia el valor de ninguna configuración, pero la actualización podría fallar. Si se produce un error en la actualización, recibe un mensaje de error que lo ayuda a resolver el conflicto.

    • Si no va a actualizar un ajuste de configuración, elimine --configuration-values '{"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}}' del comando. Si va a actualizar una configuración, sustituya “env”: {“AWS_VPC_K8S_CNI_EXTERNALSNAT”:“true”} por la configuración que desee establecer. En este ejemplo, la variable de entorno AWS_VPC_K8S_CNI_EXTERNALSNAT se establece en true. El valor que especifique debe ser válido para el esquema de configuración. Si no conoce el esquema de configuración, ejecute aws eks describe-addon-configuration --addon-name vpc-cni --addon-version v1.17.1-eksbuild.1 y reemplace v1.17.1-eksbuild.1 con el número de versión del complemento cuya configuración desea ver. El esquema se devuelve en la salida. Si ya tiene alguna configuración personalizada, quiere eliminarla toda y volver a establecer los valores de todos los ajustes en los valores predeterminados de Amazon EKS, elimine “env”:{“AWS_VPC_K8S_CNI_EXTERNALSNAT”:“true”} del comando para que quede vacío {}. Para obtener una explicación de cada configuración, consulte las Variables de configuración de CNI en GitHub.

      aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.17.1-eksbuild.1 \ --service-account-role-arn arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole \ --resolve-conflicts PRESERVE --configuration-values '{"env":{"AWS_VPC_K8S_CNI_EXTERNALSNAT":"true"}}'

      La actualización puede tardar varios segundos en completarse.

  4. Confirme que la versión del complemento se ha actualizado. Reemplace my-cluster por el nombre del clúster.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni

    La actualización puede tardar varios segundos en completarse.

    Un ejemplo de salida sería el siguiente.

    { "addon": { "addonName": "vpc-cni", "clusterName": "my-cluster", "status": "ACTIVE", "addonVersion": "v1.17.1-eksbuild.1", "health": { "issues": [] }, "addonArn": "arn:aws:eks:region:111122223333:addon/my-cluster/vpc-cni/74c33d2f-b4dc-8718-56e7-9fdfa65d14a9", "createdAt": "2023-04-12T18:25:19.319000+00:00", "modifiedAt": "2023-04-12T18:40:28.683000+00:00", "serviceAccountRoleArn": "arn:aws:iam::111122223333:role/AmazonEKSVPCCNIRole", "tags": {}, "configurationValues": "{\"env\":{\"AWS_VPC_K8S_CNI_EXTERNALSNAT\":\"true\"}}" } }

Actualizar el complemento autoadministrado

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.

  1. Confirme que no tiene instalado en el clúster el tipo Amazon EKS del complemento autoadministrado. Reemplace my-cluster por el nombre de su clúster.

    aws eks describe-addon --cluster-name my-cluster --addon-name vpc-cni --query addon.addonVersion --output text

    Si se devuelve un error, no tiene el tipo de complemento de Amazon EKS instalado en el clúster. Para autoadministrar el complemento, complete los pasos restantes de este procedimiento para actualizar el complemento. 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 de este procedimiento. 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 aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

    Un ejemplo de salida sería el siguiente.

    v1.12.6-eksbuild.2

    Es posible que su resultado no incluya el número de compilación.

  3. Haga una copia de seguridad de la configuración actual para poder aplicar la misma configuración una vez que haya actualizado la versión.

    kubectl get daemonset aws-node -n kube-system -o yaml > aws-k8s-cni-old.yaml
  4. Consulte releases en GitHub para revisar las versiones disponibles y familiarizarse con los cambios efectuados en la versión a la que desea actualizar. Tenga en cuenta que le recomendamos que actualice a la misma versión major.minor.patch que aparece en la tabla de versiones más recientes disponibles, incluso si hay versiones posteriores disponibles en GitHub. Las versiones de compilación que aparecen en la tabla no se especifican en las versiones autoadministradas que aparecen en GitHub. Actualice su versión al completar las tareas de una de las siguientes opciones:

    • Si no tiene ninguna configuración personalizada para el complemento, ejecute el comando que aparece debajo del encabezado To apply this release: en GitHub para la versión a la que desea actualizar.

    • Si tiene una configuración personalizada, descargue el archivo de manifiesto con el siguiente comando. Cambie https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.17.1/config/master/aws-k8s-cni.yaml por la URL de la versión de GitHub a la que está actualizando.

      curl -O https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/v1.17.1/config/master/aws-k8s-cni.yaml

      Si es necesario, modifique el archivo de manifiesto con la configuración personalizada de la copia de seguridad que hizo en un paso anterior y, a continuación, aplique el archivo modificado al clúster. Si los nodos no tienen acceso a los repositorios privados de Amazon ECR de Amazon EKS de donde se extraen las imágenes (consulte las líneas que comienzan con image: en el manifiesto), tendrá que descargar las imágenes, copiarlas en su propio repositorio y modificar el manifiesto para que extraiga las imágenes de su repositorio. Para obtener más información, consulte Copiar una imagen de contenedor de un repositorio en otro repositorio.

      kubectl apply -f aws-k8s-cni.yaml
      
  5. Confirme que la nueva versión ya esté instalada en el clúster.

    kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

    Un ejemplo de salida sería el siguiente.

    v1.17.1
  6. (Opcional) Instale el cni-metrics-helper en su clúster. Extrae información de la interfaz de red elástica y la dirección IP, agrega métricas en todo el clúster y publica las métricas en Amazon CloudWatch. Para obtener más información, consulte cni-metrics-helper en GitHub.