Administrar el complemento CoreDNS - Amazon EKS

Administrar el complemento CoreDNS

CoreDNS es un servidor de DNS flexible y extensible que puede servir como el DNS del clúster de Kubernetes. Al lanzar un clúster de Amazon EKS con al menos un nodo, se implementan dos réplicas de la imagen de CoreDNS de forma predeterminada, independientemente del número de nodos implementados en el clúster. Los pods de CoreDNS proporcionan resolución de nombres para todos los pods del clúster. Los pods de CoreDNS se pueden implementar en los nodos de Fargate si su clúster incluye un Perfil de AWS Fargate con un espacio de nombres que coincida con el espacio de nombres para la Deployment de CoreDNS. A fin de obtener más información sobre CoreDNS, consulte Uso de CoreDNS para la detección de servicios en la documentación de Kubernetes.

En la siguiente tabla se muestra la versión del complemento CoreDNS que se implementa con cada versión de clúster de Amazon EKS.

Versión de CoreDNS implementada con cada versión de clúster compatible con Amazon EKS
Versión de Kubernetes 1.21 1.20 1.19 1.18 1,17 1.16
CoreDNS 1.8.3 1.8.3 1.8.0 1.7.0 1.6.6 1.6.6

Si tiene un clúster 1.18 o posterior al que no ha agregado el complemento CoreDNS de Amazon EKS, puede agregarlo mediante el procedimiento de Agregar el complemento CoreDNS de Amazon EKS. Si ha creado su clúster 1.18 o posterior con la AWS Management Console a partir del 19 de mayo de 2021, el complemento CoreDNS de Amazon EKS ya se encuentra en su clúster. Si ha creado el clúster 1.18 o posterior con cualquier otra herramienta y desea utilizar el complemento CoreDNS de Amazon EKS, debe agregarlo al clúster por su cuenta.

Si ha agregado el complemento CoreDNS de Amazon EKS a su clúster 1.18 o posterior, puede administrarlo mediante los procedimientos de las secciones Actualizar el complemento CoreDNS de Amazon EKS y Eliminar el complemento CoreDNS 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 CoreDNS de Amazon EKS, el complemento autoadministrado CoreDNS todavía se está ejecutando en el clúster. Puede actualizar el complemento autoadministrado CoreDNS mediante el procedimiento de Actualizar el complemento autoadministrado CoreDNS.

Agregar el complemento CoreDNS de Amazon EKS

Seleccione la pestaña con el nombre de la herramienta que desea utilizar para agregar el complemento CoreDNS de Amazon EKS a su clúster.

importante

Antes de agregar el complemento CoreDNS 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 CoreDNS de Amazon EKS con eksctl

Reemplace my-cluster (incluido <>) con el nombre de su clúster y ejecute el siguiente comando.

eksctl create addon --name coredns --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 CoreDNS 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 CoreDNS de Amazon EKS.

  3. Elija la pestaña Configuration (Configuración) y a continuación, la pestaña Add-ons (Complementos).

  4. Seleccione Add new (Agregar nuevo).

    1. Seleccione CoreDNS en Name (Nombre).

    2. Seleccione la Version (Versión) que desea utilizar.

    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 CoreDNS de Amazon EKS con la AWS CLI

Reemplace my-cluster con el nombre de su clúster y ejecute el siguiente comando.

aws eks create-addon \ --cluster-name my-cluster \ --addon-name coredns \ --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 CoreDNS de Amazon EKS

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

eksctl

Para actualizar el complemento CoreDNS de Amazon EKS con eksctl

  1. Verifique la versión actual de su complemento coredns de Amazon EKS. Reemplace <my-cluster> (incluido <>) con el nombre del clúster.

    eksctl get addon --name coredns --cluster <my-cluster>

    Salida

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE coredns v1.8.0-eksbuild.1 ACTIVE 0 v1.8.3-eksbuild.1
  2. Actualice el complemento a la versión devuelta en UPDATE AVAILABLE en el resultado del paso anterior.

    eksctl update addon \ --name coredns \ --version <v1.8.3-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 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 actualizar el complemento CoreDNS 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 CoreDNS de Amazon EKS.

  3. Elija la pestaña Configuration (Configuración) y a continuación, la pestaña Add-ons (Complementos).

  4. Seleccione el cuadro de la parte superior derecha de coredns y, a continuación, elija Edit (Editar).

    1. Seleccione la Version (Versión) del complemento de Amazon EKS que desee utilizar.

    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 CoreDNS de Amazon EKS con la AWS CLI

  1. Verifique la versión actual de su complemento CoreDNS. Sustituya my-cluster por el nombre del clúster.

    aws eks describe-addon \ --cluster-name my-cluster \ --addon-name coredns \ --query "addon.addonVersion" \ --output text

    Salida:

    1.7.0
  2. Determine qué versiones del complemento CoreDNS se encuentran disponibles para la versión de su clúster.

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

    Salida

    1.8.0 True 1.7.0 False

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

  3. Actualice el complemento a la versión que devuelve True en el resultado del paso anterior. También puede actualizar a una versión posterior, si se devuelve en el resultado.

    aws eks update-addon \ --cluster-name my-cluster \ --addon-name coredns \ --addon-version 1.8.0 \ --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 CoreDNS de Amazon EKS

importante

Al eliminar el complemento de Amazon EKS de su clúster, se eliminan sus pods del clúster, no solo la configuración administrada por Amazon EKS. Solo debe eliminar el complemento de Amazon EKS del clúster si ninguno de los pods del clúster depende de la funcionalidad que proporciona el complemento. Después de eliminar el complemento de Amazon EKS, puede agregarlo de nuevo si lo desea.

eksctl

Para eliminar el complemento CoreDNS de Amazon EKS con eksctl

Reemplace my-cluster (incluido <>) con el nombre de su clúster y ejecute el siguiente comando.

eksctl delete addon --cluster <my-cluster> --name coredns
AWS Management Console

Para eliminar el complemento CoreDNS 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 CoreDNS de Amazon EKS.

  3. Elija la pestaña Configuration (Configuración) y a continuación, la pestaña Add-ons (Complementos).

  4. Seleccione la casilla de verificación en la parte superior derecha de la casilla coredns y, a continuación, elija Remove (Eliminar). El tipo coredns y luego seleccione Remove (Eliminar).

AWS CLI

Para eliminar el complemento CoreDNS de Amazon EKS con la AWS CLI

Reemplace my-cluster con el nombre de su clúster y ejecute el siguiente comando.

aws eks delete-addon --cluster-name my-cluster --addon-name coredns

Actualizar el complemento autoadministrado CoreDNS

Si tiene un clúster 1.17 o anterior, o un clúster 1.18 o posterior al que no ha agregado el complemento CoreDNS de Amazon EKS, siga los siguientes pasos para actualizar el complemento. Si no ha agregado el complemento CoreDNS de Amazon EKS, en su lugar complete el procedimiento en Actualizar el complemento CoreDNS de Amazon EKS.

Para actualizar el complemento autoadministrado CoreDNS con kubectl

  1. Verifique la versión actual de su complemento CoreDNS.

    kubectl describe deployment coredns \ --namespace kube-system \ | grep Image \ | cut -d "/" -f 3

    Salida:

    coredns:v1.8.0
  2. Si la versión actual de CoreDNS es 1.5.0 o posterior, pero anterior a la versión que aparece en la tabla de versiones de CoreDNS, omita este paso. Si su versión actual es anterior a 1.5.0, debe modificar el ConfigMap para que CoreDNS utilice el complemento de reenvío, en lugar del complemento proxy.

    1. Abra el mapa de configuración con el siguiente comando.

      kubectl edit configmap coredns -n kube-system
    2. Sustituya el proxy en la línea siguiente por forward. Guarde el archivo y salga del editor.

      proxy . /etc/resolv.conf
  3. Si implementó su clúster en Kubernetes 1.17 o una versión anterior originalmente, es posible que deba eliminar un término interrumpido de su manifiesto CoreDNS.

    importante

    Debe completar esto antes de actualizar a la versión 1.7.0 de CoreDNS, pero se recomienda que complete este paso incluso si está actualizando a una versión anterior.

    1. Verifique si su manifiesto CoreDNS cuenta con la línea.

      kubectl get configmap coredns -n kube-system -o jsonpath='{$.data.Corefile}' | grep upstream

      Si no se devuelve un resultado, el manifiesto no cuenta con la línea y puede pasar al siguiente paso para actualizar CoreDNS. Si se devuelve el resultado, debe eliminar la línea.

    2. Edite el ConfigMap con el siguiente comando, al eliminar la línea en el archivo que tiene la palabra upstream en ella. No realice más cambios en el archivo. Una vez que elimine la línea, guarde los cambios.

      kubectl edit configmap coredns -n kube-system -o yaml
  4. Recupere su imagen de CoreDNS actual:

    kubectl get deployment coredns \ --namespace kube-system \ -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
  5. Si está actualizando a CoreDNS 1.8.3, debe agregar el permiso endpointslices para el system:coredns del clusterrole de Kubernetes.

    kubectl edit clusterrole system:coredns -n kube-system

    Agregue la siguiente línea en las líneas de permisos existentes en el archivo.

    ... - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch ...
  6. Actualice el complemento CoreDNS al reemplazar <602401143452> (incluido <>), <cn-north-1> y <com> con los valores del resultado devuelto en el paso anterior. Reemplace <1.8.3> con la versión recomendada de CoreDNS o la posterior:

    kubectl set image --namespace kube-system deployment.apps/coredns \ coredns=<602401143452>.dkr.ecr.<us-west-2>.amazonaws.<com>/eks/coredns:v<1.8.3>-eksbuild.1