Aiutaci a migliorare questa pagina
Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo del componente aggiuntivo CoreDNS di Amazon EKS
CoreDNS è un server DNS flessibile ed estensibile che può fungere da DNS del cluster Kubernetes. Quando si avvia un cluster Amazon EKS con almeno un nodo, due repliche dell'immagine CoreDNS vengono implementate per impostazione predefinita, a prescindere dal numero di nodi implementati nel cluster. I Pods CoreDNS forniscono la risoluzione dei nomi per tutti i Pods del cluster. I Pods CoreDNS possono essere implementati sui nodi Fargate se il cluster include un Definisci quale Pods utilizzo al AWS Fargate momento del lancio con uno spazio dei nomi che corrisponde allo spazio per deployment
CoreDNS. Per ulteriori informazioni su CoreDNS, consulta Utilizzo di CoreDNS per l'individuazione dei servizi
La tabella seguente elenca la versione più recente del componente aggiuntivo di Amazon EKS disponibile per ogni versione Kubernetes.
Versione Kubernetes | 1.30 |
1.29 |
1.28 |
1.27 |
1.26 |
1.25 |
1.24 |
1.23 |
---|---|---|---|---|---|---|---|---|
v1.11.1-eksbuild.9 |
v1.11.1-eksbuild.9 |
v1.10.1-eksbuild.11 |
v1.10.1-eksbuild.11 |
v1.9.3-eksbuild.15 |
v1.9.3-eksbuild.15 |
v1.9.3-eksbuild.15 |
v1.8.7-eksbuild.10 |
Importante
Se gestisci autonomamente questo componente aggiuntivo, le versioni nella tabella potrebbero non essere le stesse delle versioni autogestite disponibili. Per ulteriori informazioni sull'aggiornamento del componente aggiuntivo del tipo autogestito, consulta Aggiornamento del componente aggiuntivo autogestito.
Considerazioni importanti sull'aggiornamento di CoreDNS
-
Per migliorare la stabilità e la disponibilità di CoreDNS Deployment, le versioni
v1.9.3-eksbuild.6
e successive ev1.10.1-eksbuild.3
vengono distribuiti con unPodDisruptionBudget
. Se hai implementato unPodDisruptionBudget
esistente, l'aggiornamento a queste versioni potrebbe non riuscire. Se l'aggiornamento non riesce, il problema dovrebbe essere risolto eseguendo una delle seguenti operazioni:-
Quando esegui l'aggiornamento del componente aggiuntivo Amazon EKS, scegli di sovrascrivere le impostazioni esistenti come opzione di risoluzione dei conflitti. Se hai effettuato altre impostazioni personalizzate su Deployment, assicurati di eseguire il backup delle impostazioni prima dell'aggiornamento in modo da poter riapplicare le altre impostazioni personalizzate dopo l'aggiornamento.
-
Rimuovi
PodDisruptionBudget
esistente e riprova a eseguire l'aggiornamento.
-
-
Nelle versioni aggiuntive EKS
v1.9.3-eksbuild.3
e successive ev1.10.1-eksbuild.6
e successive, il CoreDNS Deployment imposta ilreadinessProbe
per utilizzare l'endpoint/ready
. Questo endpoint è abilitato nel file di configurazioneCorefile
per CoreDNS.Se si utilizza un dispositivo personalizzato
Corefile
, è necessario aggiungere il pluginready
alla configurazione, in modo che l'endpoint/ready
sia attivo in CoreDNS e possa essere utilizzato dalla sonda. -
Nelle versioni aggiuntive EKS
v1.9.3-eksbuild.7
e successive ev1.10.1-eksbuild.4
e successive, è possibile modificare il.PodDisruptionBudget
È possibile modificare il componente aggiuntivo e modificare queste impostazioni nelle configurazioni facoltative utilizzando i campi dell'esempio seguente. Questo esempio mostra l'impostazione predefinitaPodDisruptionBudget
.{ "podDisruptionBudget": { "enabled": true, "maxUnavailable": 1 } }
È possibile impostare
maxUnavailable
ominAvailable
, ma non è possibile impostare entrambi sullo stessoPodDisruptionBudget
. Per ulteriori informazioni suPodDisruptionBudgets
, consulta Specifica di unPodDisruptionBudget
nella documentazione di Kubernetes. Tieni presente che se imposti
enabled
sufalse
, ilPodDisruptionBudget
non viene rimosso. Dopo aver impostato questo campo sufalse
, è necessario eliminare l'oggettoPodDisruptionBudget
. Allo stesso modo, se modifichi il componente aggiuntivo per utilizzarne una versione precedente (esegui il downgrade del componente aggiuntivo) dopo l'aggiornamento a una versione con unPodDisruptionBudget
, questo non viene rimossoPodDisruptionBudget
. Esegui il seguente comando per eliminare ilPodDisruptionBudget
:kubectl delete poddisruptionbudget coredns -n kube-system
-
Nelle versioni aggiuntive EKS
v1.10.1-eksbuild.5
e successive, modifica la tolleranza predefinita danode-role.kubernetes.io/master:NoSchedule
a per conformarlanode-role.kubernetes.io/control-plane:NoSchedule
a KEP 2067. Per ulteriori informazioni su KEP 2067, consulta KEP-2067: rinominare l'etichetta "master" di kubeadm e la taintnelle KEP (Kubernetes Enhancement Proposal) su GitHub. Nelle versioni aggiuntive EKS
v1.8.7-eksbuild.8
e successivev1.9.3-eksbuild.9
e successive, entrambe le tolleranze sono impostate per essere compatibili con tutte le versioni. Kubernetes -
Nelle versioni aggiuntive EKS
v1.9.3-eksbuild.11
v1.10.1-eksbuild.7
e successive, CoreDNS Deployment imposta un valore predefinito per.topologySpreadConstraints
Il valore predefinito garantisce che CoreDNS Pods siano distribuiti tra le zone di disponibilità se sono disponibili nodi in più zone di disponibilità. È possibile impostare un valore personalizzato che verrà utilizzato al posto del valore predefinito. Il valore predefinito è il seguente:topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: ScheduleAnyway labelSelector: matchLabels: k8s-app: kube-dns
CoreDNSv considerazioni sull'1.11
aggiornamento
-
Nelle versioni aggiuntive EKS
v1.11.1-eksbuild.4
e successive, l'immagine del contenitore si basa su un'immagine di base minimagestita da Amazon EKS Distro, che contiene un numero minimo di pacchetti e non dispone di shell. Per ulteriori informazioni, consultare Amazon EKS Distro . L'utilizzo e la risoluzione dei problemi dell'CoreDNSimmagine rimangono gli stessi.
Creare il componente aggiuntivo di Amazon EKS
Crea il componente aggiuntivo del tipo Amazon EKS. Verifica
Prerequisiti
-
Un cluster Amazon EKS esistente. Per implementarne uno, consulta Inizia a usare Amazon EKS.
-
Scopri qual è la versione del componente aggiuntivo attualmente installata sul cluster.
kubectl describe deployment coredns --namespace kube-system | grep coredns: | cut -d : -f 3
Di seguito viene riportato un output di esempio:
v1.10.1-eksbuild.11
-
Scopri qual è il tipo di componente aggiuntivo attualmente installato sul cluster. A seconda dello strumento con cui hai creato il cluster, al momento potresti non avere il componente aggiuntivo del tipo Amazon EKS installato sul cluster. Sostituisci
my-cluster
con il nome del cluster.aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query addon.addonVersion --output textSe viene restituito il numero di versione, sul cluster è installato il componente aggiuntivo del tipo Amazon EKS e non è necessario completare i passaggi rimanenti di questa procedura. Se viene restituito un errore, sul cluster non è installato il componente aggiuntivo del tipo Amazon EKS. Completa i passaggi rimanenti di questa procedura per installarlo.
-
Salva la configurazione del componente aggiuntivo attualmente installato.
kubectl get deployment coredns -n kube-system -o yaml >
aws-k8s-coredns-old.yaml
-
Crea il componente aggiuntivo utilizzando la AWS CLI. Se desideri utilizzare AWS Management Console o
eksctl
creare il componente aggiuntivo, consulta Creazione di un EKS componente aggiuntivo Amazon e specificacoredns
il nome del componente aggiuntivo. Copia il comando seguente sul tuo dispositivo. Apporta le seguenti modifiche al comando, se necessario, quindi esegui il comando modificato.-
Sostituisci
con il nome del cluster.my-cluster
aws eks create-addon --cluster-name
my-cluster
--addon-name coredns --addon-versionv1.11.1-eksbuild.9
Se hai applicato impostazioni personalizzate al tuo attuale componente aggiuntivo che sono in conflitto con le impostazioni predefinite del componente aggiuntivo di Amazon EKS, la creazione potrebbe non riuscire. Se la creazione non riesce, riceverai un errore che può aiutare a risolvere il problema. In alternativa, puoi aggiungere
--resolve-conflicts OVERWRITE
al comando precedente. Ciò consente al componente aggiuntivo di sovrascrivere le impostazioni personalizzate esistenti. Una volta creato il componente aggiuntivo, puoi aggiornarlo con le tue impostazioni personalizzate. -
-
Verifica che la versione più recente del componente aggiuntivo per la versione Kubernetes del cluster sia stata aggiunta al cluster. Sostituisci
con il nome del cluster.my-cluster
aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query addon.addonVersion --output textLa creazione del componente aggiuntivo potrebbe richiedere alcuni secondi.
Di seguito viene riportato un output di esempio:
v1.11.1-eksbuild.9
-
Se hai creato impostazioni personalizzate per il componente aggiuntivo originale, prima di creare il componente aggiuntivo di Amazon EKS, utilizza la configurazione che hai salvato precedentemente per aggiornare il componente aggiuntivo di Amazon EKS con le tue impostazioni personalizzate.
Aggiornamento del componente aggiuntivo di Amazon EKS
Aggiorna il componente aggiuntivo del tipo Amazon EKS. Se non hai aggiunto il componente aggiuntivo del tipo Amazon EKS al tuo cluster, aggiungilo o consulta Aggiornamento del componente aggiuntivo autogestito, invece di completare questa procedura.
-
Scopri qual è la versione del componente aggiuntivo attualmente installata sul cluster. Sostituisci
con il nome del cluster.my-cluster
aws eks describe-addon --cluster-name
my-cluster
--addon-name coredns --query "addon.addonVersion" --output textDi seguito viene riportato un output di esempio:
v1.10.1-eksbuild.11
Se la versione restituita è la stessa della versione Kubernetes del cluster nella tabella delle versioni più recenti, la versione più recente è già installata nel cluster e non è necessario completare il resto di questa procedura. Se invece di un numero di versione ricevi un errore, il componente aggiuntivo del tipo Amazon EKS non è installato sul cluster. È necessario creare il componente aggiuntivo prima di poterlo aggiornare con questa procedura.
-
Salva la configurazione del componente aggiuntivo attualmente installato.
kubectl get deployment coredns -n kube-system -o yaml >
aws-k8s-coredns-old.yaml
-
Aggiorna il componente aggiuntivo utilizzando la AWS CLI. Se desideri utilizzare o aggiornare il componente aggiuntivo, consulta AWS Management Console .
eksctl
Aggiornamento di un EKS componente aggiuntivo Amazon Copia il comando seguente sul tuo dispositivo. Apporta le seguenti modifiche al comando, se necessario, quindi esegui il comando modificato.-
Sostituisci
con il nome del cluster.my-cluster
-
L'opzione
--resolve-conflicts
CONSERVA
mantiene i valori di configurazione esistenti per il componente aggiuntivo. Se hai impostato valori personalizzati per le impostazioni del componente aggiuntivo e non utilizzi questa opzione, Amazon EKS sovrascrive i tuoi valori con quelli predefiniti. Se utilizzi questa opzione, è preferibile testare eventuali modifiche ai campi e ai valori su un cluster non di produzione prima di aggiornare il componente aggiuntivo sul cluster di produzione. Se modifichi questo valore inOVERWRITE
, tutte le impostazioni vengono modificate nei valori predefiniti di Amazon EKS. Se hai impostato valori personalizzati per un'impostazione qualunque, è possibile che vengano sovrascritti con i valori predefiniti di Amazon EKS. Se modifichi questo valore innone
, Amazon EKS non modifica il valore di alcuna impostazione, ma l'aggiornamento potrebbe non riuscire. Se l'aggiornamento non riesce, riceverai un messaggio di errore che ti aiuterà a risolvere il conflitto. -
Se non stai aggiornando un'impostazione di configurazione, rimuovi
--configuration-values '{
dal comando. Se stai aggiornando un'impostazione di configurazione, sostituisci"replicaCount":3
}'"replicaCount":3
con l'impostazione desiderata. In questo esempio, il numero di repliche diCoreDNS è impostato su3
. Il valore specificato deve essere valido per lo schema di configurazione. Se non conosci lo schema di configurazione,aws eks describe-addon-configuration --addon-name coredns --addon-version
esegui sostituendov1.11.1-eksbuild.9
v1.11.1-eksbuild.9
con il numero di versione del componente aggiuntivo di cui vuoi vedere la configurazione. Lo schema viene restituito nell'output. Se disponi di una configurazione personalizzata, desideri rimuoverla e reimpostare i valori di tutte le impostazioni ai valori predefiniti di Amazon EKS, rimuovi"replicaCount":3
dal comando in modo da avere delle
vuote. Per ulteriori informazioni sulle impostazioni CoreDNS, consulta Personalizzazione del servizio DNS{}
nella documentazione di Kubernetes. aws eks update-addon --cluster-name
my-cluster
--addon-name coredns --addon-versionv1.11.1-eksbuild.9
\ --resolve-conflictsPRESERVE
--configuration-values '{"replicaCount":3
}'Il completamento dell'aggiornamento potrebbe richiedere alcuni secondi.
-
-
Conferma che la versione del componente aggiuntivo sia stata aggiornata. Sostituisci
con il nome del cluster.my-cluster
aws eks describe-addon --cluster-name
my-cluster
--addon-name corednsIl completamento dell'aggiornamento potrebbe richiedere alcuni secondi.
Di seguito viene riportato un output di esempio:
{ "addon": { "addonName": "coredns", "clusterName": "
my-cluster
", "status": "ACTIVE", "addonVersion": "v1.11.1-eksbuild.9
", "health": { "issues": [] }, "addonArn": "arn:aws:eks:region
:111122223333
:addon/my-cluster
/coredns/d2c34f06-1111-2222-1eb0-24f64ce37fa4", "createdAt": "2023-03-01T16:41:32.442000+00:00", "modifiedAt": "2023-03-01T18:16:54.332000+00:00", "tags": {},"configurationValues": "{\"replicaCount\":3}"
} }
Aggiornamento del componente aggiuntivo autogestito
Importante
Consigliamo di aggiungere al cluster il componente aggiuntivo del tipo Amazon EKS anziché quello del tipo autogestito. Se non conosci bene le differenze tra i due tipi, consulta la pagina EKSComponenti aggiuntivi Amazon. Per ulteriori informazioni sull'aggiunta di un componente aggiuntivo di Amazon EKS al cluster, consulta Creazione di un EKS componente aggiuntivo Amazon. Se non riesci a utilizzare il componente aggiuntivo Amazon EKS, ti consigliamo di segnalare un problema sul motivo per cui non puoi farlo all'archivio della roadmap GitHub di Containers
-
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 textSe 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 tipo di Amazon EKS del componente aggiuntivo, utilizza la procedura descritta in Aggiornamento del componente aggiuntivo di Amazon EKS anziché questa. Se non conosci bene le differenze tra i due tipi di componente aggiuntivo, consulta EKSComponenti aggiuntivi Amazon.
-
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
-
Se la versione corrente di CoreDNS è
v1.5.0
o successiva, ma precedente alla versione elencata nella tabella Versioni CoreDNS, ignorare questa fase. Se la versione corrente è precedente alla1.5.0
, è necessario modificareConfigMap
per CoreDNS al fine di utilizzare il componente aggiuntivo avanzato, anziché il componente aggiuntivo proxy.-
Aprire il file tramite il comando seguente:
kubectl edit configmap coredns -n kube-system
-
Sostituire
proxy
nella linea seguente conforward
. Salvare il file e uscire dall'editor.
. /etc/resolv.confproxy
-
-
Se il cluster in origine è stato implementato su Kubernetes
1.17
o versioni precedenti, potrebbe essere necessario rimuovere una riga obsoleta dal manifesto CoreDNS.Importante
Devi completare questo passaggio prima di eseguire l'aggiornamento alla versione
1.7.0
di CoreDNS, ma è preferibile completare questo passaggio anche se esegui l'aggiornamento a una versione precedente.-
Verificare 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, il manifesto non ha la riga di inserimento ed è possibile passare direttamente alla fase successiva per aggiornare CoreDNS. Se viene restituito l'output, è necessario rimuovere la riga di inserimento.
-
Modificare
ConfigMap
con il seguente comando, rimuovendo la riga nel file che ha la parolaupstream
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
-
-
Recupera la versione dell'immagine CoreDNS corrente:
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
-
Se stai eseguendo l'aggiornamento a CoreDNS
1.8.3
o successive, allora dovrai aggiungere l'autorizzazioneendpointslices
alclusterrole
Kubernetessystem:coredns
.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
[...] -
Aggiorna il componente aggiuntivo CoreDNS sostituendo
e602401143452
con i valori dell'output restituiti in un passaggio precedente. Sostituisciregion-code
con la versione CoreDNSriportata nella tabella delle ultime versioni per la versione del Kubernetes.v1.11.1-eksbuild.9
kubectl set image deployment.apps/coredns -n kube-system coredns=
602401143452
.dkr.ecr.region-code
.amazonaws.com/eks/coredns:v1.11.1-eksbuild.9
Di seguito viene riportato un output di esempio:
deployment.apps/coredns image updated
-
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.1-eksbuild.9