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à.
Configurazione del plugin CNI di Amazon VPC per Kubernetes per gruppi di sicurezza per i pod Amazon EKS
Se si utilizzano pod con istanze Amazon EC2, devi configurare il plugin CNI di Amazon VPC per Kubernetes per gruppi di sicurezza
Se si utilizzano solo i pod di Fargate e non si dispone di nodi Amazon EC2 nel cluster, consulta Utilizzo di una policy di gruppo di sicurezza per un pod Amazon EKS.
-
Controlla la versione corrente del plugin CNI di Amazon VPC per Kubernetes con il comando seguente:
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3Di seguito viene riportato un output di esempio:
v1.7.6Se la versione del plugin CNI di Amazon VPC per Kubernetes è precedente a
1.7.7, aggiorna il plugin alla versione1.7.7o successiva. Per ulteriori informazioni, consulta Assegna IPs ai pod con Amazon VPC CNI -
Aggiungi la policy IAM gestita da AmazonEKSVPCResourceController
al ruolo del cluster associato al cluster Amazon EKS. La policy consente al ruolo di gestire le interfacce di rete, i relativi indirizzi IP privati e i relativi allegati e distacchi da e verso le istanze di rete. -
Recupera il nome del ruolo IAM del cluster e archivialo in una variabile. Sostituisci
my-clustercon il nome del tuo cluster.cluster_role=$(aws eks describe-cluster --name my-cluster --query cluster.roleArn --output text | cut -d / -f 2) -
Collegare la policy al ruolo.
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonEKSVPCResourceController --role-name $cluster_role
-
-
Abilita il componente aggiuntivo CNI di Amazon VPC per gestire le interfacce di rete per i pod, impostando la variabile
ENABLE_POD_ENIsutruein DaemonSetaws-node. Una volta impostato questo parametro sutrue, per ciascun nodo nel cluster il componente aggiuntivo crea una risorsacninodepersonalizzata. Il controller di risorse VPC crea e allega un'interfaccia di rete speciale chiamata interfaccia di rete trunk con la descrizioneaws-k8s-trunk-eni.kubectl set env daemonset aws-node -n kube-system ENABLE_POD_ENI=trueNota
L'interfaccia di rete trunk è inclusa nel numero massimo di interfacce di rete supportate dal tipo di istanza. Per un elenco del numero massimo di interfacce di rete supportate da ciascun tipo di istanza, consulta Indirizzi IP per interfaccia di rete per tipo di istanza nella Guida per l’utente di Amazon EC2. Se il nodo ha già allegato il numero massimo di interfacce di rete standard, il controller di risorse VPC riserverà uno spazio. Sarà necessario ridurre verticalmente i pod in esecuzione abbastanza da consentire al controller di scollegare ed eliminare un’interfaccia di rete standard, creare l’interfaccia di rete trunk e allegarla all’istanza.
-
Con il seguente comando è possibile vedere quale nodo ha una risorsa
CNINodepersonalizzata. Se viene restituito l'outputNo resources found, attendere alcuni secondi e riprovare. La fase precedente richiede il riavvio del plugin CNI di Amazon VPC per pod Kubernetes, che richiede alcuni secondi.kubectl get cninode -A NAME FEATURES ip-192-168-64-141.us-west-2.compute.internal [{"name":"SecurityGroupsForPods"}] ip-192-168-7-203.us-west-2.compute.internal [{"name":"SecurityGroupsForPods"}]Se si utilizzano versioni VPC CNI precedenti alla
1.15, sono state utilizzate le etichette dei nodi anziché la risorsaCNINodepersonalizzata. Con il seguente comando, è possibile vedere quale nodo ha l’etichetta del nodoaws-k8s-trunk-eniimpostata sutrue. Se viene restituito l'outputNo resources found, attendere alcuni secondi e riprovare. La fase precedente richiede il riavvio del plugin CNI di Amazon VPC per pod Kubernetes, che richiede alcuni secondi.kubectl get nodes -o wide -l vpc.amazonaws.com/has-trunk-attached=trueUna volta creata l’interfaccia di rete trunk, ai pod possono essere assegnati indirizzi IP secondari dalla rete trunk o dalle interfacce di rete standard. L'interfaccia trunk viene eliminata automaticamente se il nodo viene eliminato.
Quando si distribuisce un gruppo di sicurezza per un pod in un passaggio successivo, il controller di risorse VPC crea un’interfaccia di rete speciale denominata interfaccia di rete di filiali con una descrizione di
aws-k8s-branch-enie vi associa i gruppi di sicurezza. Le interfacce di rete di filiali vengono create in aggiunta alle interfacce di rete standard e trunk allegate al nodo.Se si utilizzano sonde liveness o readiness, è inoltre necessario disabilitare il demultiplexing precoce TCP, in modo che
kubeletpossa connettersi a pod su interfacce di rete di filiali tramite TCP. Per disabilitare demultiplexing precoce TCP, esegui il comando seguente:kubectl patch daemonset aws-node -n kube-system \ -p '{"spec": {"template": {"spec": {"initContainers": [{"env":[{"name":"DISABLE_TCP_EARLY_DEMUX","value":"true"}],"name":"aws-vpc-cni-init"}]}}}}'Nota
Se non utilizzi il plugin CNI di Amazon VPC
1.11.0o successivo per il componente aggiuntivo di Kubernetes e impostarloPOD_SECURITY_GROUP_ENFORCING_MODE=standard, come descritto nel passaggio successivo, non devi eseguire il comando precedente. -
Se il cluster utilizza
NodeLocal DNSCacheo desideri utilizzare la policy di rete Colico con i pod che dispongono dei propri gruppi di sicurezza, o se disponi di servizi Kubernetes di tipoNodePorteLoadBalancerche utilizzano le destinazioni di istanza conexternalTrafficPolicyimpostato suLocalper pod a cui desideri assegnare i gruppi di sicurezza, dovrai utilizzare la versione1.11.0o successiva del plugin CNI di Amazon VPC per il componente aggiuntivo di Kubernetes e dovrai abilitare la seguente impostazione:kubectl set env daemonset aws-node -n kube-system POD_SECURITY_GROUP_ENFORCING_MODE=standardIMPORTANTE: le regole del gruppo di sicurezza dei pod non si applicano al traffico tra pod o tra pod e servizi, esempio
kubeletonodeLocalDNS, che si trovano sullo stesso nodo. I pod che utilizzano gruppi di sicurezza differenti sullo stesso nodo non possono comunicare perché sono configurati in sottoreti diverse e l’instradamento è disabilitato tra tali sottoreti. Traffico in uscita dai pod verso gli indirizzi esterni al VPC è l’indirizzo di rete convertito nell’indirizzo IP dell’interfaccia di rete primaria dell’istanza (a meno che non sia stato impostatoAWS_VPC_K8S_CNI_EXTERNALSNAT=true). Per questo traffico sono utilizzate le regole nei gruppi di sicurezza per l’interfaccia di rete primaria, anziché le regole nei gruppi di sicurezza dei pod. ** Affinché questa impostazione si applichi ai pod esistenti, è necessario riavviare i pod o i nodi su cui i pod sono in esecuzione. -
Per scoprire come utilizzare una politica di gruppo di sicurezza per il pod, consulta Utilizzo di una policy di gruppo di sicurezza per un pod Amazon EKS.