Riferimento nodeadm dei nodi ibridi - 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.

Riferimento nodeadm dei nodi ibridi

La CLI Amazon EKS Hybrid Nodes (nodeadm) semplifica l’installazione, la configurazione, la registrazione e la disinstallazione dei componenti dei nodi ibridi. Puoi includere il nodeadm nelle immagini del tuo sistema operativo per automatizzare il bootstrap dei nodi ibridi, consulta Preparazione del sistema operativo per i nodi ibridi per ulteriori informazioni.

La versione del nodeadm per i nodi ibridi è diversa dalla versione del nodeadm utilizzata per avviare le istanze Amazon EC2 come nodi nei cluster Amazon EKS. Consulta la documentazione e i riferimenti per la versione del nodeadm appropriata. Questa pagina di documentazione riguarda la versione del nodeadm per i nodi ibridi.

Il codice sorgente per il nodeadm per i nodi ibridi è pubblicato nel repository GitHub https://github.com/aws/eks-hybrid.

Importante

Devi eseguire nodeadm con un utente che abbia privilegi root/sudo.

Scarica nodeadm

La versione di nodeadm per nodi ibridi è ospitata in Amazon S3 e gestita da Amazon CloudFront. Per installare nodeadm su ciascun host on-premises puoi eseguire il seguente comando dai tuoi host on-premises.

Per host x86_64

curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'

Per host ARM

curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'

Aggiungi l’autorizzazione per i file eseguibili al file binario scaricato su ciascun host.

chmod +x nodeadm

nodeadm install

Il comando nodeadm install viene utilizzato per installare gli artefatti e le dipendenze necessari per eseguire e unire nodi ibridi a un cluster Amazon EKS. Il comando nodeadm install può essere eseguito singolarmente su ciascun nodo ibrido o può essere eseguito durante le pipeline di creazione delle immagini per preinstallare le dipendenze dei nodi ibridi nelle immagini del sistema operativo.

Utilizzo

nodeadm install [KUBERNETES_VERSION] [flags]

Argomenti posizionali

(Obbligatorio) KUBERNETES_VERSION La versione major.minor di EKS Kubernetes da installare, ad esempio 1.32

Flag

Nome Richiesto Descrizione

-p,

--credential-provider

TRUE

Provider di credenziali da installare. I valori supportati sono iam-ra e ssm. Per ulteriori informazioni, consulta Preparazione delle credenziali per i nodi ibridi.

-s,

--containerd-source

FALSE

Origine per containerd. nodeadm supporta l’installazione di containerd dalla distribuzione del sistema operativo, i pacchetti Docker e la possibilità di saltare l’installazione di containerd.

Valori

distro: questo è il valore predefinito. nodeadm installerà il pacchetto containerd distribuito dal sistema operativo del nodo. distro non è un valore supportato per i sistemi operativi Red Hat Enterprise Linux (RHEL).

docker: nodeadm installerà il pacchetto containerd creato e distribuito da Docker. docker non è un valore supportato per Amazon Linux 2023

none: nodeadm non installerà il pacchetto containerd. Devi installare manualmente containerd prima di eseguire nodeadm init.

-r,

--region

FALSE

Specifica la Regione AWS per il download di artefatti come l’agente SSM. L’impostazione predefinita è us-west-2.

-t,

--timeout

FALSE

Durata massima del comando di installazione. L’input segue il formato della durata. Ad esempio, 1h23m. Il timeout per il download predefinito per il comando di installazione è impostato su 20 minuti.

-h, --help

FALSE

Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.

Examples (Esempi)

Installa la versione Kubernetes 1.32 con Systems Manager (SSM) di AWS come provider di credenziali

nodeadm install 1.32 --credential-provider ssm

Installa la versione Kubernetes 1.32 con Systems Manager (SSM) di AWS come provider di credenziali, Docker come origine containerd, con un timeout per il download di 20 minuti.

nodeadm install 1.32 --credential-provider ssm --containerd-source docker --timeout 20m

Installa la versione Kubernetes 1.32 con IAM Roles Anywhere di AWS come provider di credenziali

nodeadm install 1.32 --credential-provider iam-ra

nodeadm config check

Il comando nodeadm config check verifica la presenza di errori nella configurazione del nodo fornita. Questo comando può essere utilizzato per verificare e confermare la correttezza di un file di configurazione del nodo ibrido.

Utilizzo

nodeadm config check [flags]

Flag

Nome Richiesto Descrizione

-c,

--config-source

TRUE

Origine della configurazione di nodeadm. Per i nodi ibridi, l’input deve seguire un URI con schema di file.

-h, --help

FALSE

Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.

Examples (Esempi)

nodeadm config check -c file://nodeConfig.yaml

nodeadm init

Il comando nodeadm init avvia e connette il nodo ibrido con il cluster Amazon EKS configurato. Consulta Configurazione del modo per attivazioni ibride SSM o Configurazione del nodo per IAM Roles Anywhere per i dettagli su come configurare il file nodeConfig.yaml.

Utilizzo

nodeadm init [flags]

Flag

Nome Richiesto Descrizione

-c,

--config-source

TRUE

Origine della configurazione di nodeadm. Per i nodi ibridi, l’input deve seguire un URI con schema di file.

-s,

--skip

FALSE

Fasi di init da saltare. Non è consigliabile saltare nessuna delle fasi a meno che non sia utile per risolvere un problema.

Valori

install-validation salta la verifica se il comando di installazione precedente è stato eseguito correttamente.

cni-validation salta la verifica se le porte VXLAN della CNI di Cilium o di Calico sono aperte se il firewall è abilitato sul nodo

node-ip-validation salta la verifica se l’IP del nodo rientra in un CIDR nelle reti dei nodi remoti

-h, --help

FALSE

Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.

Examples (Esempi)

nodeadm init -c file://nodeConfig.yaml

nodeadm upgrade

Il comando nodeadm upgrade aggiorna tutti gli artefatti installati alla versione più recente e avvia il nodo per configurare gli artefatti aggiornati e unirsi al cluster EKS su AWS. Upgrade è un comando che interrompe i carichi di lavoro in esecuzione sul nodo. Devi spostare i carichi di lavoro su un altro nodo prima di eseguire l’aggiornamento.

Utilizzo

nodeadm upgrade [KUBERNETES_VERSION] [flags]

Argomenti posizionali

(Obbligatorio) KUBERNETES_VERSION La versione major.minor di EKS Kubernetes da installare, ad esempio 1.32

Flag

Nome Richiesto Descrizione

-c,

--config-source

TRUE

Origine della configurazione di nodeadm. Per i nodi ibridi, l’input deve seguire un URI con schema di file.

-t,

--timeout

FALSE

Timeout per il download degli artefatti. L’input segue il formato della durata. Ad esempio 1h23m. Il timeout per il download predefinito per il comando di aggiornamento è impostato su 10 minuti.

-s,

--skip

FALSE

Fasi dell’aggiornamento da saltare. Non è consigliabile saltare nessuna Passaggio a meno che non sia utile per risolvere un problema.

Valori

pod-validation salta la verifica se tutti i pod sono in esecuzione sul nodo, tranne i set daemon e i pod statici.

node-validation salta la verifica se il nodo è stato isolato.

init-validation salta la verifica se il nodo è stato inizializzato correttamente prima di eseguire l’aggiornamento.

-h, --help

FALSE

Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.

Examples (Esempi)

nodeadm upgrade 1.32 -c file://nodeConfig.yaml
nodeadm upgrade 1.32 -c file://nodeConfig.yaml --timeout 20m

nodeadm uninstall

Il comando nodeadm uninstall arresta e rimuove gli artefatti che nodeadm installa durante nodeadm install, inclusi kubelet e containerd. Attenzione, il comando di disinstallazione non scarica né elimina i nodi ibridi dal cluster. Devi eseguire le operazioni di scaricamento ed eliminazione separatamente, consulta Rimuovi i nodi ibridi per ulteriori informazioni. Per impostazione predefinita, nodeadm uninstall non proseguirà se sul nodo rimangono dei pod. Allo stesso modo, nodeadm uninstall non rimuove le dipendenze CNI o le dipendenze di altri componenti aggiuntivi di Kubernetes eseguiti sul cluster. Per rimuovere completamente l’installazione CNI dal tuo host, consulta le istruzioni contenute in Configurazione della CNI per nodi ibridi. Se utilizzi le attivazioni ibride SSM di AWS come provider di credenziali on-premises, il comando nodeadm uninstall annulla la registrazione degli host come istanze gestite tramite SSM di AWS.

Utilizzo

nodeadm uninstall [flags]

Flag

Nome Richiesto Descrizione

-s,

--skip

FALSE

Fasi di disinstallazione da saltare. Non è consigliabile saltare nessuna delle fasi a meno che non sia utile per risolvere un problema.

Valori

pod-validation salta la verifica se tutti i pod sono in esecuzione sul nodo, tranne i set daemon e i pod statici.

node-validation salta la verifica se il nodo è stato isolato.

init-validation salta la verifica se il nodo è stato inizializzato correttamente prima di eseguire la disinstallazione.

-h,

--help

FALSE

Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.

-f,

--force

FALSE

Forza l’eliminazione delle directory aggiuntive che potrebbero contenere file rimanenti dai componenti Kubernetes e CNI.

ATTENZIONE

Ciò eliminerà tutti i contenuti nelle directory Kubernetes e CNI predefinite (/var/lib/cni, /etc/cni/net.d, ecc.). Non utilizzare questo flag se memorizzi i tuoi dati in queste posizioni.

A partire dalla versione v1.0.9 di nodeadm, il comando ./nodeadm uninstall --skip node-validation,pod-validation --force non elimina più la directory /var/lib/kubelet. Questo perché può contenere volumi Pod e directory volume-subpath che a volte includono il filesystem dei nodi montato.

Suggerimenti per una gestione sicura

L’eliminazione dei percorsi montati può portare alla cancellazione accidentale dell’effettivo filesystem dei nodi montati. Prima di eliminare manualmente la directory /var/lib/kubelet, ispeziona attentamente tutti i montaggi attivi e smonta i volumi in modo sicuro per evitare la perdita di dati.

Examples (Esempi)

nodeadm uninstall
nodeadm uninstall --skip node-validation,pod-validation

nodeadm debug

Il comando nodeadm debug può essere utilizzato per risolvere i problemi relativi ai nodi ibridi non integri o configurati in modo errato. Verifica che i seguenti requisiti siano soddisfatti.

  • Il nodo ha accesso di rete alle API AWS richieste per l’ottenimento delle credenziali.

  • Il nodo è in grado di ottenere le credenziali AWS per il ruolo IAM di Hybrid Nodes configurato.

  • Il nodo ha accesso di rete all’endpoint dell’API EKS Kubernetes e ha la validità del certificato endpoint dell’API EKS Kubernetes.

  • Il nodo è in grado di autenticarsi con il cluster EKS, la sua identità nel cluster è valida e ha accesso al cluster EKS tramite il VPC configurato per il cluster EKS.

Se vengono rilevati errori, l’output del comando suggerisce le procedure per la risoluzione dei problemi. Alcuni passaggi di conferma mostrano le procedure secondarie. Se queste non funzionano, l’output viene mostrato in una sezione stderr sotto l’errore di convalida.

Utilizzo

nodeadm debug [flags]

Flag

Nome Richiesto Descrizione

-c, --config-source

TRUE

Origine della configurazione di nodeadm. Per i nodi ibridi, l’input deve seguire un URI con schema di file.

--no-color

FALSE

Disattiva l’output a colori. Utile per l’automazione.

-h, --help

FALSE

Mostra un messaggio di aiuto con i parametri di flag, sottocomando e valore posizionale disponibili.

Esempi

nodeadm debug -c file://nodeConfig.yaml

Posizioni dei file nodeadm

installazione di nodeadm

Durante l’esecuzione di nodeadm install, vengono configurati i seguenti file e posizioni dei file.

Artifact Path

CLI IAM Roles Anywhere

/usr/local/bin/aws_signing_helper

Binario Kubelet

/usr/bin/kubelet

Binario Kubectl

usr/local/bin/kubectl

Provider di credenziali ECR

/etc/eks/image-credential-provider/ecr-credential-provider

IAM Authenticator di AWS

/usr/local/bin/aws-iam-authenticator

CLI di configurazione SSM

/opt/ssm/ssm-setup-cli

SSM Agent

Su Ubuntu - /snap/amazon-ssm-agent/current/amazon-ssm-agent

Su RHEL e AL2023 - /usr/bin/amazon-ssm-agent

Containerd

Su Ubuntu e AL2023 - /usr/bin/containerd

Su RHEL - /bin/containerd

Iptables

Su Ubuntu e AL2023 - /usr/sbin/iptables

Su RHEL - /sbin/iptables

Plug-in CNI

/opt/cni/bin

tracciatore di artefatti installati

/opt/nodeadm/tracker

nodeadm init

Durante l’esecuzione di nodeadm init, vengono configurati i file e le posizioni seguenti dei file.

Nome Path

Kubelet kubeconfig

/var/lib/kubelet/kubeconfig

Configurazione di Kubelet

/etc/kubernetes/kubelet/config.json

Unità Kubelet systemd

/etc/systemd/system/kubelet.service

Configurazione del provider di credenziali di immagine

/etc/eks/image-credential-provider/config.json

File env Kubelet

/etc/eks/kubelet/environment

Certificati Kubelet

/etc/kubernetes/pki/ca.crt

Configurazione di Containerd

/etc/containerd/config.toml

Configurazione dei moduli del kernel Containerd

/etc/modules-load.d/contianerd.conf

File di configurazione AWS

/etc/aws/hybrid/config

File di credenziali AWS (se abilita il file delle credenziali)

/eks-hybrid/.aws/credentials

Unità di sistema di supporto alla firma di AWS

/etc/systemd/system/aws_signing_helper_update.service

File conf sysctl

/etc/sysctl.d/99-nodeadm.conf

Ca-certificates

/etc/ssl/certs/ca-certificates.crt

File chiave Gpg

/etc/apt/keyrings/docker.asc

File di origine del repository Docker

/etc/apt/sources.list.d/docker.list

Configurazione del modo per attivazioni ibride SSM

Di seguito è riportato un esempio di nodeConfig.yaml quando si utilizzano le attivazioni ibride SSM di AWS per le credenziali dei nodi ibridi.

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id

Configurazione del nodo per IAM Roles Anywhere

Di seguito è riportato un esempio di nodeConfig.yaml per IAM Roles Anywhere di AWS per le credenziali dei nodi ibridi.

Quando utilizzi IAM Roles Anywhere di AWS come provider di credenziali on-premises, il nodeName che utilizzi nella configurazione nodeadm deve essere in linea con le autorizzazioni previste per il ruolo IAM di Hybrid Nodes. Ad esempio, se le autorizzazioni per il ruolo IAM di Hybrid Nodes consentono a IAM Roles Anywhere di AWS di assumere il ruolo solo quando il nome della sessione del ruolo è uguale al CN del certificato host, allora il nodeName nella configurazione nodeadm deve essere lo stesso del CN dei tuoi certificati. Il nodeName che usi non può contenere più di 64 caratteri. Per ulteriori informazioni, consulta Preparazione delle credenziali per i nodi ibridi.

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides hybrid: iamRolesAnywhere: nodeName: # Name of the node trustAnchorArn: # ARN of the IAM Roles Anywhere trust anchor profileArn: # ARN of the IAM Roles Anywhere profile roleArn: # ARN of the Hybrid Nodes IAM role certificatePath: # Path to the certificate file to authenticate with the IAM Roles Anywhere trust anchor privateKeyPath: # Path to the private key file for the certificate

Configurazione del nodo per personalizzare kubelet (Facoltativo)

Puoi passare la configurazione e i flag di kubelet nella tua configurazione nodeadm. Vedi l’esempio seguente su come aggiungere un’etichetta abc.amazonaws.com/test-label e una configurazione del nodo aggiuntive per l’impostazione di shutdownGracePeriod su 30 secondi.

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides kubelet: config: # Map of kubelet config and values shutdownGracePeriod: 30s flags: # List of kubelet flags - --node-labels=abc.company.com/test-label=true hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id

Configurazione del nodo per personalizzare containerd (Facoltativo)

Puoi passare la configurazione containerd personalizzata nella tua configurazione nodeadm. La configurazione containerd per nodeadm accetta TOML in linea. Vedi l’esempio seguente su come configurare containerd per disabilitare l’eliminazione dei livelli di immagine decompressi nel content store containerd.

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides containerd: config: | # Inline TOML containerd additional configuration [plugins."io.containerd.grpc.v1.cri".containerd] discard_unpacked_layers = false hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id

Puoi anche utilizzare la configurazione Containerd per abilitare il supporto di SELinux. Con SELinux abilitato su containerd, assicurati che i pod programmati sul nodo abbiano i securityContext e i seLinuxOptions appropriati abilitati. Ulteriori informazioni sulla configurazione di un contesto di sicurezza sono disponibili in Kubernetes documentation.

Nota

Red Hat Enterprise Linux (RHEL) 8 e RHEL 9 hanno SELinux abilitato di default e impostato su strict sull’host. Per impostazione predefinita, SELinux è abilitato e impostato sulla modalità di autorizzazione in Amazon Linux 2023. Quando SELinux è impostato sulla modalità di autorizzazione sull’host, abilitarlo su containerd non bloccherà le richieste ma le registrerà in base alla configurazione SELinux sull’host.

apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Name of the EKS cluster region: # AWS Region where the EKS cluster resides containerd: config: | # Inline TOML containerd additional configuration [plugins."io.containerd.grpc.v1.cri"] enable_selinux = true hybrid: ssm: activationCode: # SSM hybrid activation code activationId: # SSM hybrid activation id