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à.
Configura il Amazon VPC CNI plugin for Kubernetes per gruppi di sicurezza per Amazon EKS Pods
Se usi Pods con EC2 le istanze Amazon, devi configurare il Amazon VPC CNI plugin for Kubernetes per gruppi di sicurezza
Se usi Fargate Pods solo, e non hai EC2 nodi Amazon nel tuo cluster, vediUtilizza una politica di gruppo di sicurezza per Amazon EKS Pod.
-
Controlla il tuo attuale Amazon VPC CNI plugin for Kubernetes versione con il seguente comando:
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3
Di seguito viene riportato un output di esempio:
v1.7.6
Se le ricette di Amazon VPC CNI plugin for Kubernetes la versione è precedente alla
1.7.7
, quindi aggiorna il plugin alla versione1.7.7
o successiva. Per ulteriori informazioni, consulta Amazon VPC CNI -
Aggiungi la IAM policy gestita da A mazonEKSVPCResource Controller
al ruolo del cluster associato al tuo EKS cluster Amazon. 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 IAM ruolo del cluster e memorizzalo in una variabile. Replace (Sostituisci)
my-cluster
con 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 VPC CNI componente aggiuntivo Amazon per gestire le interfacce di rete per Pods impostando la
ENABLE_POD_ENI
variabile su intrue
aws-node
DaemonSet. Una volta impostata questa impostazionetrue
, per ogni nodo del cluster il componente aggiuntivo crea una risorsacninode
personalizzata. Il controller VPC delle risorse crea e collega una speciale interfaccia di rete denominata interfaccia di rete trunk con la descrizione.aws-k8s-trunk-eni
kubectl set env daemonset aws-node -n kube-system ENABLE_POD_ENI=true
Nota
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 ogni tipo di istanza, consulta Indirizzi IP per interfaccia di rete per tipo di istanza nella Amazon EC2 User Guide. Se al nodo è già collegato il numero massimo di interfacce di rete standard, il controller VPC delle risorse si riserverà uno spazio. Dovrai ridurre la tua corsa Pods sufficiente per consentire al controller di staccare ed eliminare un'interfaccia di rete standard, creare l'interfaccia di rete trunk e collegarla all'istanza.
-
Con il seguente comando è possibile vedere quale nodo ha una risorsa
CNINode
personalizzata. Se viene restituito l'outputNo resources found
, attendere alcuni secondi e riprovare. Il passaggio precedente richiede il riavvio di Amazon VPC CNI plugin for Kubernetes Pods`, 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 VPC CNI versioni precedenti a
1.15
, sono state utilizzate le etichette dei nodi al posto della risorsa personalizzata.CNINode
Puoi vedere su quali dei tuoi nodi èaws-k8s-trunk-eni
impostata l'etichetta del nodotrue
con il seguente comando. Se viene restituito l'outputNo resources found
, attendere alcuni secondi e riprovare. Il passaggio precedente richiede il riavvio di Amazon VPC CNI plugin for Kubernetes Pods, operazione che richiede alcuni secondi.kubectl get nodes -o wide -l vpc.amazonaws.com/has-trunk-attached=true -
Una volta creata l'interfaccia di rete trunk, Pods vengono assegnati indirizzi IP secondari dal 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 una fase successiva, il controller VPC delle risorse crea una speciale interfaccia di rete denominata interfaccia di rete di filiale con una descrizione
aws-k8s-branch-eni
e la associa ai 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 le sonde Liveness o Readiness, è inoltre necessario disabilitare TCPEarly Demux, in modo che possano connettersi a
kubelet
Pods sulle interfacce di rete delle filiali utilizzando. TCP Per disabilitare TCPearly demux, esegui il seguente comando: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 stai usando
1.11.0
o una versione successiva del Amazon VPC CNI plugin for Kubernetes add-on and setPOD_SECURITY_GROUP_ENFORCING_MODE
=standard
, come descritto nel passaggio successivo, non è necessario eseguire il comando precedente. -
Se il tuo cluster utilizza
NodeLocal DNSCache
o desideri utilizzare Calico politica di rete con la tua Pods che hanno i propri gruppi di sicurezza, oppure tu hai Kubernetes servizi di tipoNodePort
eLoadBalancer
utilizzo di destinazioni di istanza con unexternalTrafficPolicy
valore impostato suLocal
for Pods a cui si desidera assegnare i gruppi di sicurezza, è necessario utilizzare la versione1.11.0
o successiva di Amazon VPC CNI plugin for Kubernetes componente aggiuntivo ed è necessario abilitare la seguente impostazione:kubectl set env daemonset aws-node -n kube-system POD_SECURITY_GROUP_ENFORCING_MODE=standard
IMPORTANT: Pod le regole dei gruppi di sicurezza non vengono applicate al traffico tra Pods o tra Pods e services, ad esempio
kubelet
onodeLocalDNS
, che si trovano sullo stesso nodo. I pod che utilizzano gruppi di sicurezza diversi sullo stesso nodo non possono comunicare perché sono configurati in sottoreti diverse e il routing è disabilitato tra queste sottoreti. Traffico in uscita da Pods verso indirizzi esterni all'indirizzo di rete VPC is tradotto nell'indirizzo IP dell'interfaccia di rete principale dell'istanza (a meno che non sia stato impostato anche questoAWS_VPC_K8S_CNI_EXTERNALSNAT=true
). Per questo traffico, vengono utilizzate le regole dei gruppi di sicurezza per l'interfaccia di rete principale, anziché le regole del Pod’s gruppi di sicurezza. ** Affinché questa impostazione si applichi a quelli esistenti Pods, è necessario riavviare il Pods o i nodi che Pods stanno funzionando. -
Per vedere come utilizzare una politica di gruppo di sicurezza per i tuoi Pod, consulta Utilizza una politica di gruppo di sicurezza per Amazon EKS Pod.