Contribuisci a migliorare questa pagina
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à.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.
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à.
Implementa un cluster Amazon EKS su Outposts AWS
Questo argomento offre una panoramica degli elementi da prendere in considerazione quando si esegue un cluster locale su un Outpost. L'argomento fornisce anche istruzioni su come implementare un cluster locale su un Outpost.
Importante
-
Queste considerazioni non sono trattate nella documentazione correlata di Amazon EKS. Se altri argomenti della documentazione di Amazon EKS sono in conflitto con le considerazioni qui riportate, segui le considerazioni qui.
-
Queste considerazioni sono soggette a modifiche e potrebbero cambiare frequentemente. Pertanto, ti consigliamo di rivedere regolarmente questo argomento.
-
Molte considerazioni sono diverse da quelle relative alla creazione di un cluster sul cloud. AWS
-
I cluster locali supportano solo i rack dell'Outpost. Un singolo cluster locale può essere eseguito su più dell'Outpost fisici che comprendono un unico Outpost logico. Un singolo cluster locale non può essere eseguito su più Outpost logici. Ogni Outpost logico ha un singolo ARN dell'Outpost.
-
I cluster locali eseguono e gestiscono il piano di controllo (control-plane) di Kubernetes nel tuo account sull’Outpost. Non puoi eseguire carichi di lavoro sulle istanze del piano di controllo (control-plane) di Kubernetes né modificare i relativi componenti. Questi nodi sono gestiti dal servizio Amazon EKS. Le modifiche al piano di controllo (control-plane) di Kubernetes non persistono tra un’operazione di gestione automatica di Amazon EKS e l’altra, come l’applicazione di patch.
-
I cluster locali supportano i componenti aggiuntivi autogestiti e i gruppi di nodi Amazon Linux autogestiti. I componenti aggiuntivi: plug-in per la Container Network Interface (CNI) di Amazon VPC per Kubernetes, kube-proxy e CoreDNS vengono installati automaticamente nei cluster locali.
-
I cluster locali richiedono l'utilizzo di Amazon EBS su Outposts. Il tuo Outpost deve avere a disposizione Amazon EBS per l’archiviazione del piano di controllo (control-plane) di Kubernetes. Gli Outpost supportano solo i volumi
gp2di Amazon EBS. -
I
PersistentVolumesKubernetes sostenuti da Amazon EBS sono supportati tramite il driver CSI per Amazon EBS. -
Le istanze del piano di controllo (control-plane) dei cluster locali sono configurate in una topologia in stack ad alta disponibilità
. Due delle tre istanze del piano di controllo (control-plane) devono essere sempre integre per mantenere il quorum. Se il quorum viene perso, contatta l' AWS assistenza, poiché saranno necessarie alcune azioni sul lato del servizio per abilitare le nuove istanze gestite.
Prerequisiti
-
Un Outpost esistente. Per ulteriori informazioni, consulta What is AWS Outposts.
-
Lo strumento a riga di comando
kubectlè installato sul computer o AWS CloudShell. La versione può essere uguale oppure immediatamente precedente o successiva alla versione di Kubernetes del cluster. Ad esempio, se la versione del cluster è1.29, puoi usarekubectlversione1.28,1.29o1.30. Per installare o aggiornarekubectl, consulta Impostazione di kubectl e eksctl: -
Versione
2.12.3o successiva o versione1.27.160o successiva dell'interfaccia a riga di AWS comando (AWS CLI) installata e configurata sul dispositivo o. AWS CloudShell Per verificare la versione attuale, usaaws --version | cut -d / -f2 | cut -d ' ' -f1. I gestori di pacchetti comeyumHomebrew per macOS sono spesso diverse versioni dell'ultima versione della CLI AWS .apt-getPer installare la versione più recente, consulta Installazione e configurazione rapida con aws configure nella Guida per l'utente dell'interfaccia a riga di AWS comando. La versione AWS CLI installata in AWS CloudShell potrebbe anche contenere diverse versioni precedenti alla versione più recente. Per aggiornarlo, consulta Installazione della AWS CLI nella tua home directory nella Guida per l' AWS CloudShell utente. -
Un principale IAM (utente o ruolo) con autorizzazioni
createedescribeper un cluster Amazon EKS. Per ulteriori informazioni, consultare Creazione di un cluster Kubernetes locale su un Outpost e Elencare o descrivere tutti i cluster.
Quando viene creato un cluster Amazon EKS locale, il principale IAM che crea il cluster viene aggiunto in modo permanente. Il principale viene aggiunto specificamente alla tabella di autorizzazione RBAC Kubernetes come amministratore. Questa entità dispone di autorizzazioni system:masters. L’identità di questa entità non è visibile nella configurazione del cluster, per cui è fondamentale prendere nota dell’entità che ha creato il cluster, in modo da non eliminarla. Inizialmente, solo il principale che ha creato il server può effettuare chiamate al server API Kubernetes utilizzando kubectl. Se utilizzi la console per creare il cluster, assicurati che le stesse credenziali IAM siano presenti nella catena di credenziali AWS SDK quando kubectl esegui i comandi sul cluster. Dopo aver creato il cluster, è possibile concedere l'accesso ad altri principali IAM al cluster.
Creazione di un cluster locale Amazon EKS.
Puoi creare un cluster locale con i seguenti strumenti descritti in questa pagina:
Puoi anche usare la AWS CLI, l'API Amazon EKS AWS SDKs
eksctl
Per creare un cluster con eksctl
-
Installa la versione
0.215.0o successiva dello strumento da riga dieksctlcomando sul tuo dispositivo o. AWS CloudShell Per l’installazione o l’aggiornamento dieksctl, consulta la sezione Installationnella documentazione di eksctl. -
Copia i seguenti contenuti sul tuo dispositivo. Sostituisci i valori seguenti, quindi esegui il comando modificato per creare il file
outpost-control-plane.yaml:-
Sostituiscilo
region-codecon la AWS regione supportata in cui desideri creare il cluster. -
Sostituisci
my-clustercon un nome da assegnare al cluster. Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può avere una lunghezza superiore a 100 caratteri. Il nome deve essere univoco all'interno AWS della regione e AWS dell'account in cui stai creando il cluster. Il nome deve essere univoco all'interno AWS della regione e AWS dell'account in cui stai creando il cluster. -
Sostituisci
vpc-ExampleID1esubnet-ExampleID1con il IDs VPC e la sottorete esistenti. Il VPC e la sottorete devono soddisfare i requisiti in Crea un VPC e sottoreti per i cluster Amazon EKS su Outposts. AWS -
Sostituiscilo con
uniqueidl'ID del tuo Outpost. -
Sostituisci
m5.largecon un tipo di istanza disponibile sul tuo Outpost. Prima di scegliere un tipo di istanza, consulta la sezione Selezione dei tipi di istanze e dei gruppi di posizionamento per i cluster Amazon EKS su AWS Outposts in base alle considerazioni sulla capacità. Vengono implementate tre istanze del piano di controllo. Questo numero non può essere modificato.cat >outpost-control-plane.yaml <<EOF apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-cluster region: region-code version: "1.33" vpc: clusterEndpoints: privateAccess: true id: "vpc-vpc-ExampleID1" subnets: private: outpost-subnet-1: id: "subnet-subnet-ExampleID1" outpost: controlPlaneOutpostARN: arn:aws: outposts:region-code:111122223333:outpost/op-uniqueid controlPlaneInstanceType: m5.large EOFPer un elenco completo di tutte le opzioni disponibili, consulta AWS Outposts Support
e Config file schema nella documentazione di eksctl.
-
-
Crea il cluster utilizzando il file di configurazione creato nel passaggio precedente.
eksctlcrea un VPC e una sottorete sul tuo Outpost in cui implementare il cluster.eksctl create cluster -f outpost-control-plane.yamlIl provisioning del cluster richiede diversi minuti. Durante la creazione del cluster, vengono visualizzate diverse righe di output. L’ultima riga di output è simile alla seguente riga di esempio.
[✓] EKS cluster "my-cluster" in "region-code" region is readySuggerimento
Per visualizzare la maggior parte delle opzioni che è possibile specificare durante la creazione di un cluster con
eksctl, utilizza il comandoeksctl create cluster --help. Per visualizzare tutte le opzioni disponibili, puoi utilizzare un fileconfig. Per ulteriori informazioni, consulta Uso dei file confige lo Schema dei file config nella documentazione di eksctl. Gli esempi di file di configurazionesono disponibili su GitHub. Il comando
eksctlha creato automaticamente una voce di accesso per il principale IAM (utente o ruolo) che ha creato il cluster e ha concesso a quest’ultimo autorizzazioni di amministratore per gli oggetti Kubernetes sul cluster. Se non desideri che il creatore del cluster disponga di un accesso di amministratore agli oggetti Kubernetes sul cluster, aggiungi il seguente testo al file di configurazione precedente:bootstrapClusterCreatorAdminPermissions: false(allo stesso livello dimetadata,vpceoutpost). Se hai aggiunto l’opzione, dopo la creazione del cluster devi creare una voce di accesso per almeno un principale IAM, altrimenti nessun principale IAM avrà accesso agli oggetti Kubernetes sul cluster.
Console di gestione AWS
Per creare il cluster con la Console di gestione AWS
-
Hai bisogno di un VPC e una sottorete esistenti che soddisfano i requisiti di Amazon EKS. Per ulteriori informazioni, consulta Creazione di VPC e sottoreti per i cluster Amazon EKS su AWS Outposts.
-
Se disponi già di un ruolo IAM del cluster locale o intendi creare il cluster con
eksctl, puoi ignorare questo passaggio. Per impostazione predefinita,eksctlcrea un ruolo per te.-
Per creare un file JSON della policy di attendibilità IAM, esegui il comando seguente.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
Crea il ruolo IAM del cluster Amazon EKS. Per creare un ruolo IAM, è necessario assegnare l'azione
iam:CreateRole(autorizzazione) al principale IAM che sta creando il ruolo.aws iam create-role --role-name myAmazonEKSLocalClusterRole --assume-role-policy-document file://"eks-local-cluster-role-trust-policy.json" -
Allega la policy gestita di Amazon EKS denominata Amazon EKSLocal OutpostClusterPolicy al ruolo. Per allegare una policy IAM a un principale IAM, è necessario assegnare al principale che sta allegando la policy una delle azioni IAM (autorizzazioni) seguenti:
iam:AttachUserPolicyoiam:AttachRolePolicy.aws iam attach-role-policy --policy-arn arn:aws: iam::aws:policy/AmazonEKSLocalOutpostClusterPolicy --role-name myAmazonEKSLocalClusterRole
-
-
Aprire la Console Amazon EKS
. -
Nella parte superiore dello schermo della console, assicurati di aver selezionato una AWS regione supportata.
-
Seleziona Aggiungi cluster e quindi Crea.
-
Nella pagina Configure cluster (Configura cluster), inserisci o seleziona i valori per i campi seguenti:
-
Posizione del piano di controllo Kubernetes: scegli Outposts. AWS
-
Outpost ID (ID Outpost): scegli l'ID dell'Outpost su cui vuoi creare il tuo piano di controllo.
-
Instance type (Tipo di istanza): seleziona un tipo di istanza. Vengono visualizzati solo i tipi di istanza disponibili nel tuo Outpost. Nell'elenco a discesa, ogni tipo di istanza descrive per quanti nodi è consigliato il tipo di istanza. Prima di scegliere un tipo di istanza, consulta la sezione Selezione dei tipi di istanze e dei gruppi di posizionamento per i cluster Amazon EKS su AWS Outposts in base alle considerazioni sulla capacità. Tutte le repliche vengono implementate utilizzando lo stesso tipo di istanza. Non è possibile modificare il tipo di istanza dopo la creazione del cluster. Vengono implementate tre istanze del piano di controllo. Questo numero non può essere modificato.
-
Nome: un nome per il cluster. Deve essere univoca nel tuo account. AWS Il nome può contenere solo caratteri alfanumerici (con distinzione tra lettere maiuscole e minuscole) e trattini. Deve iniziare con un carattere alfanumerico e non può avere una lunghezza superiore a 100 caratteri. Il nome deve essere univoco all'interno AWS della regione e AWS dell'account in cui stai creando il cluster. Il nome deve essere univoco all'interno AWS della regione e AWS dell'account in cui stai creando il cluster.
-
Versione Kubernetes: scegli la versione di Kubernetes da utilizzare per il cluster. È preferibile selezionare la versione più recente, a meno che non occorra utilizzare una versione precedente.
-
Ruolo del servizio cluster: scegli il ruolo IAM del cluster Amazon EKS creato in un passaggio precedente per consentire al piano di controllo Kubernetes di gestire le risorse. AWS
-
Accesso di amministratore del cluster Kubernetes: se desideri che il principale IAM (ruolo o utente) che crea il cluster disponga dell’accesso di amministratore agli oggetti Kubernetes sul cluster, accetta l’impostazione predefinita (Consenti). Amazon EKS crea una voce di accesso per il principale IAM e concede le autorizzazioni di amministratore del cluster per la voce di accesso. Per ulteriori informazioni sulle voci di accesso, consulta la sezione Concedere agli utenti IAM l’accesso a Kubernetes con le voci di accesso EKS.
Se desideri che un principale IAM diverso da quello che crea il cluster disponga dell’accesso di amministratore agli oggetti del cluster Kubernetes, scegli l’opzione Non consentire. Dopo la creazione del cluster, qualsiasi principale IAM che disponga delle autorizzazioni IAM per creare voci di accesso può aggiungerne una per tutti i principali IAM che necessitano dell’accesso agli oggetti del cluster Kubernetes. Per ulteriori informazioni sulle autorizzazioni IAM richieste, consulta Actions defined by Amazon Elastic Kubernetes Service nella Documentazione di riferimento per l'autorizzazione ai servizi. Se scegli l’opzione Non consentire e non crei alcuna voce di accesso, nessun principale IAM avrà accesso agli oggetti Kubernetes sul cluster.
-
Tag: (facoltativo) aggiunge eventuali tag al cluster. Per ulteriori informazioni, consulta Organizzazione delle risorse Amazon EKS con tag. Quando hai finito con questa pagina, seleziona Avanti.
-
-
Nella pagina Specifica reti, seleziona i valori dei campi riportati di seguito:
-
VPC: scegli un VPC esistente. Il VPC deve disporre di un numero sufficiente di indirizzi IP da mettere a disposizione per il cluster, i nodi e le altre risorse Kubernetes da creare. Il VPC deve soddisfare i requisiti elencati in VPC requirements and considerations.
-
Sottoreti: per impostazione predefinita, tutte le sottoreti disponibili nel VPC specificato nel campo precedente sono preselezionate. Le sottoreti scelte devono soddisfare i requisiti elencati in Subnet requirements and considerations.
-
Gruppi di sicurezza: (facoltativo) specifica uno o più gruppi di sicurezza da associare alle interfacce di rete create da Amazon EKS. Amazon EKS crea automaticamente un gruppo di sicurezza che consente la comunicazione tra il cluster e il VPC. Amazon EKS associa questo gruppo di sicurezza, e altri gruppi eventualmente scelti dall'utente, alle interfacce di rete create. Per ulteriori informazioni sul gruppo di sicurezza del cluster creato da Amazon EKS, consulta Visualizzazione dei requisiti relativi al gruppo di sicurezza Amazon EKS per cluster. Puoi modificare le regole nel gruppo di sicurezza del cluster creato da Amazon EKS. Se vuoi aggiungere i tuoi gruppi di sicurezza, non potrai modificare i gruppi scelti dopo la creazione del cluster. Per consentire agli host on-premises di comunicare con l'endpoint del cluster, è necessario consentire il traffico in entrata dal gruppo di sicurezza del cluster. Per i cluster che non dispongono di una connessione internet in ingresso e in uscita (noti anche come cluster privati), è necessario effettuare una delle seguenti operazioni:
-
Aggiungi il gruppo di sicurezza associato agli endpoint VPC richiesti. Per ulteriori informazioni sugli endpoint richiesti, consulta la sezione Accesso tramite sottorete Utilizzo di endpoint VPC dell'interfaccia ai servizi. AWS
-
Modifica il gruppo di sicurezza creato da Amazon EKS per consentire il traffico proveniente dal gruppo di sicurezza associato agli endpoint VPC. Quando hai finito con questa pagina, seleziona Avanti.
-
-
-
Nella pagina Configura osservabilità, puoi scegliere facoltativamente le opzioni Parametri e Registrazione del piano di controllo che desideri attivare. Per impostazione predefinita, i tipi di log sono disattivati.
-
Per ulteriori informazioni sull’opzione relativa alle metriche di Prometheus, consulta Passaggio 1: attivazione delle metriche Prometheus.
-
Per ulteriori informazioni sulle opzioni Registrazione del piano di controllo, consulta Inviare log del piano di controllo a CloudWatch Logs. Quando hai finito con questa pagina, seleziona Avanti.
-
-
Nella pagina Rivedi e crea, controlla le informazioni che hai inserito o selezionato nelle pagine precedenti. Se devi apportare modifiche, seleziona Edit (Modifica). Al termine della configurazione, seleziona Create (Crea). Durante il provisioning del cluster, nel campo Stato viene visualizzato il messaggio CREAZIONE.
Il provisioning del cluster richiede diversi minuti.
Visualizzazione del cluster locale Amazon EKS
-
Dopo aver creato il cluster, puoi visualizzare le istanze del piano EC2 di controllo Amazon che sono state create.
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Name:Tags[?Key==`Name`]|[0].Value}' | grep my-cluster-control-planeDi seguito viene riportato un output di esempio.
"Name": "my-cluster-control-plane-id1" "Name": "my-cluster-control-plane-id2" "Name": "my-cluster-control-plane-id3"Ogni istanza è contaminata dal taint
node-role.eks-local.amazonaws.com/control-planeper evitare che i carichi di lavoro vengano pianificati sulle istanze del piano di controllo. Per ulteriori informazioni sui taint, consulta Taints and Tolerationsnella documentazione di Kubernetes. Amazon EKS monitora continuamente lo stato dei cluster locali. Eseguiamo operazioni di gestione automatiche, come applicazioni di patch di sicurezza e riparazioni di istanze non integre. Quando i cluster locali vengono disconnessi dal cloud, eseguiamo una serie di operazioni per garantire che il cluster venga ripristinato a uno stato di integrità al momento della riconnessione. -
Se hai creato il cluster utilizzando
eksctl, puoi ignorare questo passaggio.eksctllo completerà automaticamente per tuo conto. Abilitakubectlper consentire la comunicazione con il cluster aggiungendo un nuovo contesto al fileconfigkubectl. Per istruzioni su come creare e aggiornare il file, consulta Connettere kubectl a un cluster EKS creando un file kubeconfig.aws eks update-kubeconfig --region region-code --name my-clusterDi seguito viene riportato un output di esempio.
Added new context arn:aws: eks:region-code:111122223333:cluster/my-cluster to /home/username/.kube/config -
Per connetterti al server API Kubernetes del cluster locale, devi disporre dell’accesso al gateway locale per la sottorete o connetterti dall’interno del VPC. Per ulteriori informazioni sulla connessione di un rack Outpost alla rete locale, consulta Come funzionano i gateway locali per i rack nella Guida per l'utente di Outposts AWS . Se utilizzi l’instradamento VPC diretto e la sottorete dell’Outpost ha un instradamento al gateway locale, gli indirizzi IP privati delle istanze del piano di controllo (control-plane) di Kubernetes vengono trasmessi automaticamente sulla rete locale. L’endpoint del server API Kubernetes del server locale è ospitato in Amazon Route 53 (Route 53). L'endpoint del servizio API può essere risolto dai server DNS pubblici negli indirizzi IP privati dei server dell'API Kubernetes.
Le istanze del piano di controllo (control-plane) di Kubernetes dei cluster locali sono configurate con interfacce di rete elastiche statiche con indirizzi IP privati fissi che non cambiano durante il ciclo di vita del cluster. Le macchine che interagiscono con il server API Kubernetes potrebbero non avere connettività a Route 53 durante le disconnessioni di rete. In tal caso, si consiglia di configurare
/etc/hostscon gli indirizzi IP privati statici per continuare le operazioni. Ti consigliamo inoltre di configurare i server DNS locali e di collegarli al tuo Outpost. Per ulteriori informazioni, consulta la documentazione di AWS Outposts. Esegui il comando riportato per confermare che è stata stabilita la comunicazione con il cluster.kubectl get svcDi seguito viene riportato un output di esempio.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 28h -
(Facoltativo) Verifica l'autenticazione del cluster locale quando si trova in uno stato disconnesso dal cloud. AWS Per istruzioni, consulta Preparazione di cluster Amazon EKS locali su AWS Outposts per le disconnessioni di rete.
Risorse interne
Amazon EKS crea le seguenti risorse sul tuo cluster. Le risorse sono destinate all'uso interno di Amazon EKS. Per garantire il corretto funzionamento del cluster, non modificare o alterare queste risorse.
-
I seguenti pod mirror
: -
aws-iam-authenticator-node-hostname -
eks-certificates-controller-node-hostname -
etcd-node-hostname -
kube-apiserver-node-hostname -
kube-controller-manager-node-hostname -
kube-scheduler-node-hostname
-
-
I seguenti componenti aggiuntivi autogestiti:
-
kube-system/coredns -
kube-system/kube-proxy(non viene creato finché non aggiungi il primo nodo) -
kube-system/aws-node(non viene creato finché non si aggiunge il primo nodo). I cluster locali utilizzano il plug-in per la CNI di Amazon VPC per Kubernetes per le reti di cluster. Non modificare la configurazione per le istanze del piano di controllo (pod denominatiaws-node-controlplane-*). Ci sono variabili di configurazione che consentono di modificare il valore predefinito quando il plugin crea nuove interfacce di rete. Per ulteriori informazioni, consulta la documentazionesu GitHub.
-
-
I seguenti servizi:
-
default/kubernetes -
kube-system/kube-dns
-
-
Una
PodSecurityPolicydenominataeks.system -
Una
ClusterRoledenominataeks:system:podsecuritypolicy -
Una
ClusterRoleBindingdenominataeks:system -
Oltre al gruppo di sicurezza del cluster, Amazon EKS crea un gruppo di sicurezza denominato nel tuo AWS account
eks-local-internal-do-not-use-or-edit-. Questo gruppo di sicurezza consente al traffico di fluire liberamente tra i componenti Kubernetes in esecuzione sulle istanze del piano di controllo (control-plane).cluster-name-uniqueid
Fasi successive consigliate:
-
Concedere alle entità IAM l'accesso al cluster. Per consentire alle entità di visualizzare le risorse Kubernetes nella console Amazon EKS, concedi le relative autorizzazioni richieste.
-
Acquisisci familiarità con ciò che accade durante le disconnessioni dalla rete.
-
Prendi in considerazione la possibilità di impostare un piano di backup per
etcd. Amazon EKS non supporta il backup e il ripristino automatici dietcdper i cluster locali. Per ulteriori informazioni, consulta Backing up an etcd clusternella documentazione di Kubernetes. Le due opzioni principali sono l'utilizzo di etcdctlper automatizzare l'acquisizione di snapshot o l'utilizzo del backup del volume di archiviazione di Amazon EBS.