Actualización del complemento autoadministrado CoreDNS de Amazon EKS - Amazon EKS

Actualización del complemento autoadministrado CoreDNS de Amazon EKS

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 Cómo crear un complemento de Amazon EKS. 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.

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.

  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, en lugar de realizar 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 deployment coredns -n kube-system | grep Image | cut -d ":" -f 3

    Un ejemplo de salida sería el siguiente.

    v1.8.7-eksbuild.2
  3. Si la versión actual de CoreDNS es v1.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 ConfigMap 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
  4. 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, quiere decir que 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
  5. Recupere su imagen actual de CoreDNS:

    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
  6. Si está actualizando a CoreDNS 1.8.3 o posterior, debe agregar el permiso endpointslices para el system:coredns del clusterrole de Kubernetes.

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