Aggiornamento del componente aggiuntivo CoreDNS autogestito di Amazon EKS - Amazon EKS

Contribuisci a migliorare questa pagina

Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.

Aggiornamento del componente aggiuntivo CoreDNS autogestito di Amazon EKS

Importante

Consigliamo di aggiungere al cluster il componente aggiuntivo del tipo Amazon EKS anziché quello del tipo autogestito. In caso di dubbi sulle differenze tra i due tipi, consultare la pagina Componenti aggiuntivi Amazon EKS. Per ulteriori informazioni sull'aggiunta di un componente aggiuntivo di Amazon EKS al cluster, consulta Creare un componente aggiuntivo Amazon EKS. Se non è possibile utilizzare il componente aggiuntivo di Amazon EKS, si consiglia di segnalare il problema nel repository GitHub delle roadmap dei container.

Prima di iniziare, consultare le considerazioni sull’aggiornamento. Per ulteriori informazioni, consulta Considerazioni importanti sull’aggiornamento di CoreDNS.

  1. Verifica che sul cluster sia installato il componente aggiuntivo del tipo autogestito. Sostituisci my-cluster con il nome del tuo cluster.

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

    Se viene restituito un messaggio di errore, sul cluster è installato il componente aggiuntivo del tipo autogestito. Completa i passaggi rimanenti di questa procedura. Se viene restituito il numero di versione, sul cluster è installato il tipo Amazon EKS del componente aggiuntivo. Per aggiornare il componente aggiuntivo del tipo Amazon EKS, utilizzare la procedura descritta alla pagina Update the CoreDNS Amazon EKS add-on anziché quella qui indicata. In caso di dubbi sulle differenze tra i tipi di componente aggiuntivo, consultare la pagina Componenti aggiuntivi Amazon EKS.

  2. Scopri qual è la versione dell'immagine di container attualmente installata sul cluster.

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

    Di seguito viene riportato un output di esempio:

    v1.8.7-eksbuild.2
  3. Se la versione corrente di CoreDNS è v1.5.0 o successiva, ma precedente alla versione indicata nella tabella Versioni CoreDNS, saltare questa fase. Se la versione corrente è precedente alla 1.5.0, è necessario modificare ConfigMap per CoreDNS al fine di utilizzare il componente aggiuntivo avanzato, anziché il componente aggiuntivo proxy.

    1. Aprire il file ConfigMap con il comando seguente:

      kubectl edit configmap coredns -n kube-system
    2. Sostituire proxy nella linea seguente con forward. Salvare il file e uscire dall'editor.

      proxy . /etc/resolv.conf
  4. Se il cluster è stato originariamente implementato su Kubernetes 1.17 o versioni precedenti, potrebbe essere necessario rimuovere una riga obsoleta dal manifesto CoreDNS.

    Importante

    È necessario completare questo passaggio prima di eseguire l’aggiornamento alla versione 1.7.0 di CoreDNS, ma è preferibile completarlo anche si esegue l’aggiornamento a una versione precedente.

    1. Controllare se il manifesto CoreDNS presenta la riga di inserimento.

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

      Se non viene restituito alcun output, nel manifesto non è presente la riga ed è possibile passare direttamente alla fase successiva per aggiornare CoreDNS. Se viene restituito l'output, è necessario rimuovere la riga di inserimento.

    2. Modificare ConfigMap con il seguente comando, rimuovendo la riga nel file che ha la parola upstream in esso. Non apportare ulteriori modifiche al file. Una volta rimossa la riga di inserimento, salvare le modifiche.

      kubectl edit configmap coredns -n kube-system -o yaml
  5. Recuperare la versione attuale dell’immagine CoreDNS:

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

    Di seguito viene riportato un output di esempio:

    602401143452.dkr.ecr.region-code.amazonaws.com/eks/coredns:v1.8.7-eksbuild.2
  6. Se si esegue l’aggiornamento a CoreDNS versione 1.8.3 o successive, è necessario aggiungere l’autorizzazione endpointslices al system:coredns del clusterrole Kubernetes.

    kubectl edit clusterrole system:coredns -n kube-system

    Aggiungere le seguenti righe sotto le righe di autorizzazioni esistenti nella sezione rules del file.

    [...] - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - list - watch [...]
  7. Aggiornare il componente aggiuntivo CoreDNS sostituendo602401143452 e region-code con i valori dell’output restituiti in una fase precedente. Sostituire v1.11.3-eksbuild.1 con la versione CoreDNS indicata nella tabella delle versioni più recenti per la versione 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

    Di seguito viene riportato un output di esempio:

    deployment.apps/coredns image updated
  8. Controlla nuovamente la versione dell'immagine del container per accertarti che sia stata aggiornata alla versione specificata nel passaggio precedente.

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

    Di seguito viene riportato un output di esempio:

    v1.11.3-eksbuild.1