Configura il Amazon VPC CNI plugin for Kubernetes per gruppi di sicurezza per Amazon EKS Pods - Amazon EKS

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.

  1. 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 alla1.7.7, quindi aggiorna il plugin alla versione 1.7.7 o successiva. Per ulteriori informazioni, consulta Amazon VPC CNI

  2. 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.

    1. 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)
    2. Collegare la policy al ruolo.

      aws iam attach-role-policy --policy-arn arn:aws: iam::aws:policy/AmazonEKSVPCResourceController --role-name $cluster_role
  3. Abilita il VPC CNI componente aggiuntivo Amazon per gestire le interfacce di rete per Pods impostando la ENABLE_POD_ENI variabile su in true aws-node DaemonSet. Una volta impostata questa impostazionetrue, per ogni nodo del cluster il componente aggiuntivo crea una risorsa cninode 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.

  4. Con il seguente comando è possibile vedere quale nodo ha una risorsa CNINode personalizzata. Se viene restituito l'output No 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 a1.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 nodo true con il seguente comando. Se viene restituito l'output No 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 set POD_SECURITY_GROUP_ENFORCING_MODE =standard, come descritto nel passaggio successivo, non è necessario eseguire il comando precedente.

  5. 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 tipo NodePort e LoadBalancer utilizzo di destinazioni di istanza con un externalTrafficPolicy valore impostato su Local for Pods a cui si desidera assegnare i gruppi di sicurezza, è necessario utilizzare la versione 1.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.

  6. 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.