Aiutaci 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à.
Limita il traffico di rete Pod con le policy di rete Kubernetes
Puoi utilizzare una policy di rete Kubernetes per limitare il traffico di rete da e verso i tuoi Pods. Per ulteriori informazioni, consulta le politiche di rete
È necessario configurare quanto segue per utilizzare questa funzionalità:
-
Imposta l'applicazione delle policy all'avvio di Pod. Lo fai nel
aws-node
contenitore del VPC CNI.DaemonSet
-
Abilita il parametro di policy di rete per il componente aggiuntivo.
-
Configura il cluster per utilizzare la policy di rete Kubernetes
Prima di iniziare, esamina le considerazioni. Per ulteriori informazioni, consulta Considerazioni.
Prerequisiti
Di seguito sono riportati i prerequisiti per la funzionalità:
Versione minima del cluster
Un cluster Amazon EKS esistente. Per implementarne uno, consulta Nozioni di base su Amazon EKS. Il cluster deve essere in versione Kubernetes o successiva. 1.25
Il cluster deve eseguire una delle versioni Kubernetes e della piattaforma elencate nella tabella seguente. Tieni presente che sono supportate anche tutte le versioni di Kubernetes e della piattaforma successive a quelle elencate. Puoi verificare la versione corrente di Kubernetes my-cluster
sostituendo il seguente comando con il nome del cluster e quindi eseguendo il comando modificato:
aws eks describe-cluster --name my-cluster --query cluster.version --output text
Versione di Kubernetes | Versione della piattaforma |
---|---|
|
|
|
|
|
|
Versione minima VPC CNI
Versione 1.14
o successiva del plug-in Amazon VPC CNI per Kubernetes sul tuo cluster. È possibile verificare la versione attuale con il seguente comando.
kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3
Se la versione è precedente alla 1.14
, consulta la pagina Aggiornamento del CNI di Amazon VPC (componente aggiuntivo Amazon EKS) per eseguire l'aggiornamento alla versione 1.14
o successiva.
Versione minima del kernel Linux
I nodi devono avere una versione del kernel Linux 5.10
o successiva. È possibile verificare la versione del kernel con uname -r
. Se utilizzi le versioni più recenti di Amazon Linux ottimizzato per Amazon EKS, Amazon Linux accelerato ottimizzato per Amazon EKS e Bottlerocket AMIs, dispongono già della versione AMIs del kernel richiesta.
La versione v20231116
o successive delle AMI Amazon Linux accelerate ottimizzate per Amazon EKS dispone della versione del kernel 5.10
.
Fase 1: configura l'applicazione delle policy all'avvio di Pod
Il plug-in Amazon VPC CNI per Kubernetes configura le politiche di rete per i pod in parallelo al provisioning dei pod. Fino a quando tutte le politiche non saranno configurate per il nuovo pod, i contenitori nel nuovo pod inizieranno con una politica di autorizzazione predefinita. Questa è chiamata modalità standard. Una politica di autorizzazione predefinita significa che tutto il traffico in entrata e in uscita è consentito da e verso i nuovi pod. Ad esempio, ai pod non verrà applicata alcuna regola del firewall (tutto il traffico è consentito) finché il nuovo pod non verrà aggiornato con le politiche attive.
Con la NETWORK_POLICY_ENFORCING_MODE
variabile impostata sustrict
, i pod che utilizzano il CNI VPC iniziano con una politica di negazione predefinita, quindi vengono configurate le politiche. Questa è chiamata modalità rigorosa. In modalità rigorosa, è necessario disporre di una politica di rete per ogni endpoint a cui i pod devono accedere nel cluster. Tieni presente che questo requisito si applica ai pod CoredNS. La politica di negazione predefinita non è configurata per i pod con rete host.
È possibile modificare la politica di rete predefinita impostando la variabile NETWORK_POLICY_ENFORCING_MODE
di ambiente su strict
nel aws-node
contenitore del CNI VPC. DaemonSet
env: - name: NETWORK_POLICY_ENFORCING_MODE value: "strict"
Passaggio 2: abilitare il parametro della politica di rete per il componente aggiuntivo
Per impostazione predefinita, per i parametri la funzionalità di policy di rete utilizza la porta 8162
sul nodo. Inoltre, la funzionalità utilizzava la porta 8163
per le sonde dell'integrità. Se esegui un'altra applicazione sui nodi o all'interno dei pod che deve utilizzare queste porte, l'app non viene eseguita. Nella versione VPC CNI v1.14.1
o successiva, puoi modificare queste porte.
Utilizzare la procedura seguente per abilitare il parametro di policy di rete per il componente aggiuntivo.
AWS Management Console
-
Aprire la Console Amazon EKS
. -
Nel riquadro di navigazione a sinistra, seleziona Cluster, quindi seleziona il nome del cluster per cui desideri configurare il componente aggiuntivo CNI di Amazon VPC.
-
Seleziona la scheda Componenti aggiuntivi.
-
Seleziona la casella nella parte superiore destra della casella del componente aggiuntivo e scegli Edit (Modifica).
-
Nella
name of add-on
pagina Configura:-
Seleziona una
v1.14.0-eksbuild.3
o una versione successiva nell'elenco delle versioni. -
Scegli Impostazioni di configurazione facoltative.
-
Inserisci la chiave JSON
"enableNetworkPolicy":
e il valore"true"
nei Valori di configurazione. Il testo risultante deve essere un oggetto JSON valido. Se questa chiave e questo valore sono gli unici dati nella casella di testo, racchiudi la chiave e il valore tra parentesi graffe{ }
.L'esempio seguente ha la funzionalità dei criteri di rete abilitata e le metriche e i sensori di stato sono impostati sui numeri di porta predefiniti:
{ "enableNetworkPolicy": "true", "nodeAgent": { "healthProbeBindAddr": "8163", "metricsBindAddr": "8162" } }
-
Helm
Se hai installato il plug-in Amazon VPC CNI per Kubernetes tramitehelm
, puoi aggiornare la configurazione per modificare le porte.
-
Esegui il seguente comando per modificare le porte. Imposta il numero di porta nel valore, rispettivamente, della chiave
nodeAgent.metricsBindAddr
onodeAgent.healthProbeBindAddr
.helm upgrade --set nodeAgent.metricsBindAddr=8162 --set nodeAgent.healthProbeBindAddr=8163 aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
kubectl
-
Apri la
DaemonSet
delaws-node
nell'editor.kubectl edit daemonset -n kube-system aws-node
-
Sostituisci i numeri di porta negli argomenti del comando seguente nel
args:
del containeraws-network-policy-agent
nel manifesto del daemonsetaws-node
della CNI del VPC.- args: - --metrics-bind-addr=:8162 - --health-probe-bind-addr=:8163
Passaggio 3: installa il file system Berkeley Packet Filter (BPF) sui tuoi nodi
È necessario montare il file system Berkeley Packet Filter (BPF) su ciascuno dei nodi.
Nota
Se il tuo cluster è una versione 1.27
o successiva, puoi saltare questo passaggio poiché tutti gli Amazon Linux e Bottlerocket ottimizzati per Amazon EKS AMIs per 1.27
o versioni successive dispongono già di questa funzionalità.
Per tutte le altre versioni del cluster, se si esegue l'upgrade di Amazon Linux ottimizzato per Amazon EKS alla versione v20230703
o successiva oppure si aggiorna l'AMI Bottlerocket alla versione v1.0.2
o successiva, è possibile saltare questo passaggio.
-
Installa il file system Berkeley Packet Filter (BPF) su ciascuno dei nodi.
sudo mount -t bpf bpffs /sys/fs/bpf
-
Quindi, aggiungi lo stesso comando ai dati utente nel modello di lancio per i tuoi gruppi Amazon EC2 Auto Scaling.
Passaggio 4: configura il cluster per utilizzare le politiche di rete Kubernetes
Configura il cluster per utilizzare le politiche di rete Kubernetes. Puoi impostarlo per un componente aggiuntivo Amazon EKS o un componente aggiuntivo autogestito.
-
Aprire la Console Amazon EKS
. -
Nel riquadro di navigazione a sinistra, seleziona Cluster, quindi seleziona il nome del cluster per cui desideri configurare il componente aggiuntivo CNI di Amazon VPC.
-
Seleziona la scheda Componenti aggiuntivi.
-
Seleziona la casella nella parte superiore destra della casella del componente aggiuntivo e scegli Edit (Modifica).
-
Nella pagina Configura:
name of addon
-
Seleziona una
v1.14.0-eksbuild.3
o una versione successiva nell'elenco delle versioni. -
Scegli Impostazioni di configurazione facoltative.
-
Inserisci la chiave JSON
"enableNetworkPolicy":
e il valore"true"
nei Valori di configurazione. Il testo risultante deve essere un oggetto JSON valido. Se questa chiave e questo valore sono gli unici dati nella casella di testo, racchiudi la chiave e il valore tra parentesi graffe{ }
. L'esempio seguente mostra che la policy di rete è abilitata:{ "enableNetworkPolicy": "true" }
Lo screenshot seguente mostra un esempio di tale scenario.
-
-
Esegui il seguente comando AWS CLI. Sostituisci
my-cluster
con il nome del cluster e l'ARN del ruolo IAM con il ruolo che stai utilizzando.aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.14.0-eksbuild.3 \ --service-account-role-arn arn:aws: iam::123456789012:role/AmazonEKSVPCCNIRole \ --resolve-conflicts PRESERVE --configuration-values '{"enableNetworkPolicy": "true"}'
Se hai installato il plug-in Amazon VPC CNI per Kubernetes tramitehelm
, puoi aggiornare la configurazione per abilitare la politica di rete.
-
Esegui il comando seguente per abilitare la policy di rete.
helm upgrade --set enableNetworkPolicy=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
-
Apri la
ConfigMap
delamazon-vpc-cni
nell'editor.kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
-
Aggiungi la seguente riga ai
data
nellaConfigMap
.enable-network-policy-controller: "true"
Una volta aggiunta la riga,
ConfigMap
dovrebbe apparire come nell'esempio seguente.apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-network-policy-controller: "true"
-
Apri la
DaemonSet
delaws-node
nell'editor.kubectl edit daemonset -n kube-system aws-node
-
Sostituisci il valore
false
contrue
nell'argomento del comando--enable-network-policy=false
inargs:
nel containeraws-network-policy-agent
nel manifesto del daemonsetaws-node
della CNI di VPC.- args: - --enable-network-policy=true
-
Fase 5. Passaggi successivi
Dopo aver completato la configurazione, verifica che i aws-node
pod siano in esecuzione sul cluster.
kubectl get pods -n kube-system | grep 'aws-node\|amazon'
Di seguito viene riportato un output di esempio:
aws-node-gmqp7 2/2 Running 1 (24h ago) 24h aws-node-prnsh 2/2 Running 1 (24h ago) 24h
Nei aws-node
pod sono presenti 2 contenitori nelle versioni 1.14
e successive. Nelle versioni precedenti e se le policy di rete sono disabilitate, nei pod aws-node
è presente un solo container.
Ora puoi implementare le policy di rete Kubernetes nel tuo cluster.
Per implementare le politiche di rete Kubernetes, crei oggetti Kubernetes e li distribuisci nel tuo clusterNetworkPolicy
. NetworkPolicy
gli oggetti rientrano nell'ambito di un namespace. Implementate politiche per consentire o negare il traffico tra i Pod in base a selettori di etichette, namespace e intervalli di indirizzi IP. Per ulteriori informazioni sulla creazione di NetworkPolicy
oggetti, consulta le politiche di rete
L'applicazione degli NetworkPolicy
oggetti Kubernetes viene implementata utilizzando l'Extended Berkeley Packet Filter (eBPF). Relativo alle implementazioni basate su iptables
, offre caratteristiche di latenza e prestazioni inferiori, tra cui un utilizzo ridotto della CPU e l'evitamento delle ricerche sequenziali. Inoltre, le sonde eBPF forniscono l'accesso a dati ricchi di contesto che aiutano a eseguire il debug di problemi complessi a livello di kernel e a migliorare l'osservabilità. Amazon EKS supporta un esportatore basato su EBPF che sfrutta le sonde per registrare i risultati delle politiche su ciascun nodo ed esportare i dati in raccoglitori di log esterni per facilitare il debug. Per ulteriori informazioni, consulta la documentazione eBPF