

 **Ayude a mejorar esta página** 

Para contribuir a esta guía del usuario, elija el enlace **Edit this page on GitHub** que se encuentra en el panel derecho de cada página.

# Actualización del complemento autoadministrado CoreDNS de Amazon EKS
<a name="coredns-add-on-self-managed-update"></a>

**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](eks-add-ons.md). Para obtener más información acerca de cómo agregar un complemento de Amazon EKS al clúster, consulte [Cómo crear un complemento de Amazon EKS](creating-an-add-on.md). Si no puede utilizar 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](https://github.com/aws/containers-roadmap/issues).

Antes de comenzar, revise las consideraciones para la actualización. Para obtener más información, consulte [Consideraciones importantes sobre la actualización de CoreDNS](managing-coredns.md#coredns-upgrade).

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 coredns --query addon.addonVersion --output text
   ```

   Si se devuelve un mensaje de error, tiene el tipo de complemento autoadministrado instalado en el clúster. Complete los pasos restantes de este procedimiento. Si se devuelve el número de versión, tiene el tipo de complemento de Amazon EKS instalado en el clúster. Para actualizar el tipo de Amazon EKS del complemento, siga el procedimiento que aparece en [Actualizar el complemento CoreDNS de Amazon EKS](coredns-add-on-update.md), en lugar de realizar este procedimiento. Si no está familiarizado con las diferencias entre los tipos de complementos, consulte [Complementos de Amazon EKS](eks-add-ons.md).

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

   ```
   kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
   ```

   Un ejemplo de salida sería el siguiente.

   ```
   v1.8.7-eksbuild.2
   ```

1. Si la versión actual de CoreDNS es `v1.5.0` o una posterior, pero anterior a la versión que aparece en la tabla de [versiones de CoreDNS](managing-coredns.md#coredns-versions), omita este paso. Si su versión actual es anterior a `1.5.0`, debe modificar `ConfigMap` para que CoreDNS utilice el complemento de reenvío, en lugar del complemento proxy.

   1. Abra el `ConfigMap` con el siguiente comando.

      ```
      kubectl edit configmap coredns -n kube-system
      ```

   1. Sustituya el `proxy` en la línea siguiente por `forward`. Guarde el archivo y salga del editor.

      ```
      proxy . /etc/resolv.conf
      ```

1. Si implementó su clúster en Kubernetes `1.17` o una versión anterior inicialmente, es posible que deba eliminar una línea interrumpida de su manifiesto de CoreDNS.
**importante**  
Debe completar este paso 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.

   1. 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
      ```

1. Recupere su versión de la imagen de CoreDNS actual:

   ```
   kubectl describe deployment coredns -n kube-system | grep Image
   ```

   Un ejemplo de salida sería el siguiente.

   ```
   602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
   ```

1. Si está actualizando a CoreDNS `1.8.3` o una versión posterior, debe agregar el permiso `endpointslices` al `clusterrole` de Kubernetes `system:coredns`.

   ```
   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
   [...]
   ```

1. Para actualizar el complemento CoreDNS, reemplace *602401143452* y *region-code* por los valores de la salida devuelta en un paso anterior. Reemplace *v1.11.3-eksbuild.1* por la versión de CoreDNS que aparece en la [tabla de versiones más recientes](managing-coredns.md#coredns-versions) correspondiente a la versión de Kubernetes.

   ```
   kubectl set image deployment.apps/coredns -n kube-system  coredns=602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.11.3-eksbuild.1
   ```

   Un ejemplo de salida sería el siguiente.

   ```
   deployment.apps/coredns image updated
   ```

1. Vuelva a comprobar la versión de la imagen del contenedor para confirmar que se actualizó a la versión que especificó en el paso anterior.

   ```
   kubectl describe deployment coredns -n kube-system | grep Image | cut -d ":" -f 3
   ```

   Un ejemplo de salida sería el siguiente.

   ```
   v1.11.3-eksbuild.1
   ```