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.
Preparazione del sistema operativo per i nodi ibridi
Bottlerocket, Amazon Linux 2023 (AL2023), Ubuntu e RHEL vengono convalidati su base continuativa per l’uso come sistema operativo di nodi per nodi ibridi. Bottlerocket è supportato da AWS solo in ambienti VMware vSphere. AL2023 non è coperto dai piani di supporto di AWS se eseguito al di fuori di Amazon EC2. AL2023 può essere utilizzato solo in ambienti virtualizzati on-premises, consulta Amazon Linux 2023 User Guide per ulteriori informazioni. AWS supporta l’integrazione dei nodi ibridi con i sistemi operativi Ubuntu e RHEL ma non fornisce supporto per il sistema operativo stesso.
Il provisioning e la gestione del sistema operativo sono una tua responsabilità. Quando testi i nodi ibridi per la prima volta, è più semplice eseguire la CLI Amazon EKS Hybrid Nodes (nodeadm) su un host già fornito. Per le implementazioni di produzione, ti consigliamo di includere nodeadm nelle immagini del tuo sistema operativo configurate per l’esecuzione come servizio systemd per unire automaticamente gli host ai cluster Amazon EKS all’avvio dell’host. Se utilizzi Bottlerocket come sistema operativo del nodo su vSphere, non è necessario utilizzare nodeadm poiché Bottlerocket contiene già le dipendenze necessarie per i nodi ibridi e si connetterà automaticamente al cluster configurato all’avvio dell’host.
Compatibilità con la versione
La tabella seguente rappresenta le versioni del sistema operativo compatibili e convalidate per l’uso come sistema operativo dei nodi per i nodi ibridi. Se utilizzi altre varianti o versioni del sistema operativo non incluse in questa tabella, la compatibilità dei nodi ibridi con la variante o la versione del sistema operativo non è coperta dall’Assitenza AWS. I nodi ibridi sono indipendenti dall’infrastruttura sottostante e supportano le architetture x86 e ARM.
| Sistema operativo | Versioni |
|---|---|
|
Amazon Linux |
Amazon Linux 2023 (AL2023) |
|
Bottlerocket |
La versione 1.37.0 e le versioni successive VMware che eseguono Kubernetes 1.28 e versioni successive |
|
Ubuntu |
Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04 |
|
Red Hat Enterprise Linux |
RHEL 8, RHEL 9 |
Considerazioni sul sistema operativo
Domande generali
-
La CLI Amazon EKS Hybrid Nodes (
nodeadm) può essere utilizzata per semplificare l’installazione e la configurazione dei componenti e delle dipendenze dei nodi ibridi. Puoi eseguire il processonodeadm installdurante le pipeline di creazione dell’immagine del sistema operativo o in Passaggio di runtime su ogni host on-premises. Per ulteriori informazioni sui componenti chenodeadminstalla, consulta Riferimento nodeadm dei nodi ibridi. -
Se utilizzi un proxy nell’ambiente on-premises per accedere a Internet, è necessaria una configurazione aggiuntiva del sistema operativo per i processi di installazione e aggiornamento per configurare il gestore di pacchetti per l’utilizzo del proxy. Per istruzioni, consulta Configurare il proxy per i nodi ibridi.
Bottlerocket
-
I passaggi e gli strumenti per connettere un nodo Bottlerocket sono diversi da quelli per altri sistemi operativi e sono descritti separatamente in Connessione dei nodi ibridi con Bottlerocket, anziché nelle istruzioni di Connessione di nodi ibridi.
-
I passaggi per Bottlerocket non utilizzano lo strumento CLI dei nodi ibridi,
nodeadm. -
Solo le varianti VMware della versione Bottlerocket 1.37.0 e successive sono supportate con EKS Hybrid Nodes. Le varianti VMware di Bottlerocket sono disponibili per le versioni 1.28 e successive di Kubernetes. Altre varianti di Bottlerocket
non sono supportate come sistema operativo dei nodi ibridi. NOTA: le varianti VMware di Bottlerocket sono disponibili solo per l’architettura x86_64.
Containerd
-
Containerd è il runtime del container Kubernetes standard ed è una dipendenza per i nodi ibridi, nonché per tutti i tipi di calcolo dei nodi Amazon EKS. La CLI di Amazon EKS Hybrid Nodes (
nodeadm) tenta di installare containerd durante il processonodeadm install. È possibile configurare l’installazione containerd nella Passaggio di runtime dinodeadm installcon l’opzione--containerd-sourcedella riga di comando. Le opzioni valide sononone,distroedocker. Se stai usando RHEL,distronon è un’opzione valida e puoi configurarenodeadmper installare la build containerd dai repository di Docker oppure puoi installare containerd manualmente. Quando utilizzi AL2023 o Ubuntu,nodeadminstalla containerd per impostazione predefinita dalla distribuzione del sistema operativo. Se non vuoi che nodeadm installi containerd, usa l’opzione--containerd-source none.
Ubuntu
-
Se utilizzi Ubuntu 24.04, potresti dover aggiornare la versione di containerd o modificare la configurazione di AppArmor per adottare una correzione che consenta ai pod di chiudersi correttamente, consulta Ubuntu #2065423
. È necessario un riavvio per applicare le modifiche al profilo AppArmor. L’ultima versione di Ubuntu 24.04 ha una versione containerd aggiornata nel suo gestore di pacchetti con la correzione (versione containerd 1.7.19 o successive).
ARM
-
Se utilizzi hardware ARM, è necessario un processore compatibile con ARM v8.2 con la Cryptography Extension (ARMv8.2+crypto) per eseguire la versione 1.31 e successive del componente aggiuntivo EKS kube-proxy. Tutti i sistemi Raspberry Pi precedenti al Raspberry Pi 5, così come i processori basati su Cortex-A72, non soddisfano questo requisito. Come soluzione alternativa, puoi continuare a utilizzare la versione 1.30 del componente aggiuntivo EKS kube-proxy fino alla fine del supporto esteso a luglio del 2026, consultare il Calendario delle versioni di Kubernetes o utilizzare un’immagine kube-proxy personalizzata dall’upstream.
-
Il seguente messaggio di errore nel registro kube-proxy indica questa incompatibilità:
Fatal glibc error: This version of Amazon Linux requires a newer ARM64 processor compliant with at least ARM architecture 8.2-a with Cryptographic extensions. On EC2 this is Graviton 2 or later.
Creazione di immagini del sistema operativo
Amazon EKS fornisce modelli di Packer di esempionodeadm e lo configurano per l’esecuzione all’avvio dell’host. Questa procedura è consigliata per evitare di trasferire le dipendenze dei nodi ibridi singolarmente su ciascun host e per automatizzare il processo di bootstrap dei nodi ibridi. Puoi utilizzare i modelli Packer di esempio con un’immagine ISO di Ubuntu 22.04, Ubuntu 24.04, RHEL 8 o RHEL 9 e produrre immagini con questi formati: OVA, Qcow2 o raw.
Prerequisiti
Prima di utilizzare i modelli Packer di esempio, è necessario che sul computer da cui esegui Packer sia installato quanto segue.
-
Packer versione 1.11.0 o successiva. Per istruzioni sull’installazione di Packer, consulta Install Packer
nella documentazione di Packer. -
Se stai creando OVA, VMware vSphere plug-in 1.4.0 o successivo
-
Se stai creando immagini
Qcow2o grezze, plug-in QEMU versione 1.x
Impostazione delle variabili di ambiente
Prima di eseguire la build di Packer, imposta le seguenti variabili di ambiente sul computer da cui stai eseguendo Packer.
Generale
Le seguenti variabili di ambiente devono essere impostate per creare immagini con tutti i sistemi operativi e i formati di output.
| Variabile di ambiente | Tipo | Descrizione |
|---|---|---|
|
PKR_SSH_PASSWORD |
Stringa |
Packer utilizza le variabili |
|
ISO_URL |
Stringa |
URL dell’ISO da utilizzare. Può essere un collegamento web da scaricare da un server o un percorso assoluto verso un file locale |
|
ISO_CHECKSUM |
Stringa |
Checksum associato per l’ISO fornito. |
|
CREDENTIAL_PROVIDER |
Stringa |
Provider di credenziali per nodi ibridi. I valori validi sono |
|
K8S_VERSION |
Stringa |
Versione di Kubernetes per nodi ibridi (ad esempio |
|
NODEADM_ARCH |
Stringa |
Architettura per |
RHEL
Se utilizzi RHEL, è necessario impostare le seguenti variabili di ambiente.
| Variabile di ambiente | Tipo | Descrizione |
|---|---|---|
|
RH_USERNAME |
Stringa |
nome utente del gestore di sottoscrizioni RHEL |
|
RH_PASSWORD |
Stringa |
password del gestore delle sottoscrizioni RHEL |
|
RHEL_VERSION |
Stringa |
Versione iso di Rhel in uso. I valori validi sono |
Ubuntu
Non sono richieste variabili di ambiente specifiche per Ubuntu.
vSphere
Se stai creando un OVA VMware vSphere, è necessario impostare le seguenti variabili di ambiente.
| Variabile di ambiente | Tipo | Descrizione |
|---|---|---|
|
VSPHERE_SERVER |
Stringa |
Indirizzo del server vSphere |
|
VSPHERE_USER |
Stringa |
Nome utente vSphere |
|
VSPHERE_PASSWORD |
Stringa |
Password vSphere |
|
VSPHERE_DATACENTER |
Stringa |
Nome del data center vSphere |
|
VSPHERE_CLUSTER |
Stringa |
Nome del cluster vSphere |
|
VSPHERE_DATASTORE |
Stringa |
Nome del datastore vSphere |
|
VSPHERE_NETWORK |
Stringa |
Nome della rete vSphere |
|
VSPHERE_OUTPUT_FOLDER |
Stringa |
Cartella di output vSphere per i modelli |
QEMU
| Variabile di ambiente | Tipo | Descrizione |
|---|---|---|
|
PACKER_OUTPUT_FORMAT |
Stringa |
Formato di output per il generatore QEMU. I valori validi sono |
Convalida del modello
Prima di eseguire la build, convalida il modello con il seguente comando dopo aver impostato le variabili di ambiente. Sostituisci template.pkr.hcl se stai usando un nome diverso per il tuo modello.
packer validate template.pkr.hcl
Creazione di immagini
Crea le tue immagini con i seguenti comandi e usa il flag -only per specificare la destinazione e il sistema operativo delle tue immagini. Sostituisci template.pkr.hcl se stai usando un nome diverso per il tuo modello.
OVA vSphere
Nota
Se utilizzi RHEL con vSphere, devi convertire i file kickstart in un’immagine OEMDRV e passarla come ISO da cui avviare il sistema. Per ulteriori informazioni, consulta il Packer Readme
OVA Ubuntu 22.04
packer build -only=general-build.vsphere-iso.ubuntu22 template.pkr.hcl
OVA Ubuntu 24.04
packer build -only=general-build.vsphere-iso.ubuntu24 template.pkr.hcl
OVA RHEL 8
packer build -only=general-build.vsphere-iso.rhel8 template.pkr.hcl
OVA RHEL 9
packer build -only=general-build.vsphere-iso.rhel9 template.pkr.hcl
QEMU
Nota
Se stai creando un’immagine per una CPU host specifica che non corrisponde all’host del tuo generatore, consulta la documentazione QEMU-cpu con il nome della CPU host quando esegui i seguenti comandi.
Qcow2/Raw Ubuntu 22.04
packer build -only=general-build.qemu.ubuntu22 template.pkr.hcl
Qcow2/Raw Ubuntu 24.04
packer build -only=general-build.qemu.ubuntu24 template.pkr.hcl
Qcow2/Raw RHEL 8
packer build -only=general-build.qemu.rhel8 template.pkr.hcl
Qcow2/Raw RHEL 9
packer build -only=general-build.qemu.rhel9 template.pkr.hcl
Trasferimento della configurazione di nodeadm tramite i dati utente
Puoi trasferire la configurazione per nodeadm ai tuoi dati utente tramite cloud-init per configurare e connettere automaticamente i nodi ibridi al cluster EKS all’avvio dell’host. Di seguito è riportato un esempio di come eseguire questa operazione quando utilizzi VMware vSphere come infrastruttura per i nodi ibridi.
-
Installa la CLI
govcseguendo le istruzioni nel govc readmesu GitHub. -
Dopo aver eseguito la build di Packer nella sezione precedente e aver effettuato il provisioning del modello, puoi clonare il modello per creare più nodi diversi utilizzando quanto segue. Devi clonare il modello per ogni nuova macchina virtuale che stai creando e che verrà utilizzata per i nodi ibridi. Sostituisci le variabili nel comando seguente con i valori per il tuo ambiente. Il comando
VM_NAMEriportato di seguito viene utilizzato comeNODE_NAMEquando inserisci i nomi delle macchine virtuali tramite il filemetadata.yaml.govc vm.clone -vm "/PATH/TO/TEMPLATE" -ds="YOUR_DATASTORE" \ -on=false -template=false -folder=/FOLDER/TO/SAVE/VM "VM_NAME" -
Dopo aver clonato il modello per ciascuna delle tue nuove macchine virtuali, crea un
userdata.yamle unmetadata.yamlper le tue macchine virtuali. Le macchine virtuali possono condividerle gli stessiuserdata.yamlemetadata.yamle le popolerai singolarmente nei passaggi seguenti. La configurazione dinodeadmviene creata e definita nella sezionewrite_filesdel tuouserdata.yaml. L’esempio seguente utilizza le attivazioni ibride SSM di AWS come provider di credenziali on-premises per i nodi ibridi. Per ulteriori informazioni sulla configurazione dinodeadm, consulta Riferimento nodeadm dei nodi ibridi.userdata.yaml:
#cloud-config users: - name: # username for login. Use 'builder' for RHEL or 'ubuntu' for Ubuntu. passwd: # password to login. Default is 'builder' for RHEL. groups: [adm, cdrom, dip, plugdev, lxd, sudo] lock-passwd: false sudo: ALL=(ALL) NOPASSWD:ALL shell: /bin/bash write_files: - path: /usr/local/bin/nodeConfig.yaml permissions: '0644' content: | apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: # Cluster Name region: # AWS region hybrid: ssm: activationCode: # Your ssm activation code activationId: # Your ssm activation id runcmd: - /usr/local/bin/nodeadm init -c file:///usr/local/bin/nodeConfig.yaml >> /var/log/nodeadm-init.log 2>&1metadata.yaml:
Crea un
metadata.yamlper il tuo ambiente. Mantieni il formato della variabile"$NODE_NAME"nel file poiché questo verrà compilato con valori in un passaggio successivo.instance-id: "$NODE_NAME" local-hostname: "$NODE_NAME" network: version: 2 ethernets: nics: match: name: ens* dhcp4: yes -
Aggiungi i file
userdata.yamlemetadata.yamlcome stringhegzip+base64con i seguenti comandi. I seguenti comandi devono essere eseguiti per ciascuna delle macchine virtuali che si stanno creando. SostituisciVM_NAMEcon il nome della macchina virtuale che stai aggiornando.export NODE_NAME="VM_NAME" export USER_DATA=$(gzip -c9 <userdata.yaml | base64) govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata="${USER_DATA}" govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.userdata.encoding=gzip+base64 envsubst '$NODE_NAME' < metadata.yaml > metadata.yaml.tmp export METADATA=$(gzip -c9 <metadata.yaml.tmp | base64) govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata="${METADATA}" govc vm.change -dc="YOUR_DATASTORE" -vm "$NODE_NAME" -e guestinfo.metadata.encoding=gzip+base64 -
Accendi le tue nuove macchine virtuali, che dovrebbero connettersi automaticamente al cluster EKS che hai configurato.
govc vm.power -on "${NODE_NAME}"