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 CoreDNS proporcionan resolución de nombres para todos los pods del clúster. Los pods 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 para la detección de serviciosCoreDNS 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.23 1.22 1.21 1.20 1.19
CoreDNS 1.8.7-eksbuild.2 1.8.7 1.8.4 1.8.3 1.8.0

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ó inicialmente un clúster 1.17 o anterior mediante 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 como complemento autoadministrado.

Puede migrar el complemento autoadministrado al complemento de Amazon EKS mediante el procedimiento de Agregar el complemento CoreDNS de Amazon EKS. Si tiene un clúster al que ya ha agregado el complemento CoreDNS, 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.

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 CNI plugin for Kubernetes y los complementos kube-proxy se encuentran en las versiones mínimas enumeradas en Tokens de cuenta de servicio.

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 por el nombre del clúster y, a continuación, 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 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 acerca de otras opciones para este ajuste, consulte Addons (Complementos) en la documentación de eksctl. 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 seleccione el nombre del clúster para el que desea configurar el complemento CoreDNS de Amazon EKS.

  3. Elija 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. En Conflict resolution method (Método de resolución de conflictos), seleccione una de las opciones. 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 por el nombre del clúster y, a continuación, 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 automáticamente CoreDNS 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 CoreDNS en un clúster existente, debe iniciar la actualización y Amazon EKS actualiza el complemento 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 por el nombre de su clúster.

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

    El ejemplo de resultado es el siguiente.

    NAME VERSION STATUS ISSUES IAMROLE UPDATE AVAILABLE coredns v1.8.7-eksbuild.2 ACTIVE 0 v1.8.7-eksbuild.3
  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.7-eksbuild.3 --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 acerca de otras opciones para este ajuste, consulte Addons (Complementos) en la documentación de eksctl. 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 seleccione el nombre del clúster para el que desea actualizar el complemento CoreDNS de Amazon EKS.

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

  4. Seleccione el botón de selección de la parte superior derecha del cuadro coredns y luego elija Edit (Editar).

    1. Seleccione la Version (Versión) del complemento de Amazon EKS que desee utilizar. Le recomendamos que seleccione la versión más reciente.

    2. En Conflict resolution method (Método de resolución de conflictos), seleccione una de las opciones. 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. Reemplace my-cluster por el nombre de su clúster.

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

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

    v1.8.7-eksbuild.3
  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.23 \ --query "addons[].addonVersions[].[addonVersion, compatibilities[].defaultVersion]" --output text

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

    v1.8.7-eksbuild.3 False v1.8.7-eksbuild.2 True

    La versión con True debajo es la versión predeterminada que se implementa cuando se crea el complemento. Es posible que la versión que se implementa al crear el complemento no sea la versión más reciente disponible. En el resultado anterior, está disponible una versión más reciente que la que se implementó cuando se creó el complemento.

  3. Actualice el complemento a la versión más reciente.

    aws eks update-addon --cluster-name my-cluster --addon-name coredns --addon-version v1.8.7-eksbuild.3 --resolve-conflicts PRESERVE

    La opción PRESERVE conserva cualquier configuración personalizada que haya establecido para el complemento. Para obtener más información acerca de otras opciones para este ajuste, consulte update-addon en la Referencia de la línea de comandos de Amazon EKS. 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

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.

Seleccione la pestaña con el nombre de la herramienta que desea usar para eliminar el complemento CoreDNS de Amazon EKS.

eksctl

Para eliminar el complemento CoreDNS 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 coredns --preserve
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 Add-ons (Complementos).

  4. Seleccione el botón de selección de la parte superior derecha del cuadro coredns y luego 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 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 coredns --preserve

Actualizar el complemento autoadministrado CoreDNS

Si tiene un clúster al que no ha agregado el complemento CoreDNS de Amazon EKS, siga los siguientes pasos para actualizar el complemento. Si 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

    El ejemplo de resultado es el siguiente.

    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 inicialmente, 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 actual de CoreDNS:

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

    kubectl edit clusterrole system:coredns -n kube-system

    Agregue las siguientes líneas en las líneas de permisos existentes en la sección rules del archivo.

    ... - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch ...
  6. Actualice el complemento CoreDNS sustituyendo 602401143452 y region-code con los valores de la salida devueltos en un paso anterior. Reemplace 1.8.7-eksbuild.2 con la versión CoreDNS recomendada de su clúster o posterior:

    kubectl set image --namespace kube-system deployment.apps/coredns \ coredns=602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2