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à.
Rete Windows
Panoramica di Windows Container Networking
I contenitori Windows sono fondamentalmente diversi dai contenitori Linux. I contenitori Linux utilizzano costrutti Linux come namespace, file system union e cgroups. In Windows, questi costrutti vengono astratti dai containerd dall'Host

Dal punto di vista della rete, HCS e HNS fanno funzionare i contenitori Windows come macchine virtuali. Ad esempio, ogni contenitore dispone di un adattatore di rete virtuale (vNIC) collegato a uno switch virtuale Hyper-V (vSwitch) come mostrato nel diagramma precedente.
Gestione degli indirizzi IP
Un nodo in Amazon EKS utilizza la sua Elastic Network Interface (ENI) per connettersi a una rete AWS VPC. Attualmente, è supportato un solo ENI per nodo di lavoro Windows. La gestione degli indirizzi IP per i nodi Windows viene eseguita da VPC Resource Controller
Il numero di pod che un nodo di lavoro di Windows può supportare dipende dalla dimensione del nodo e dal numero di indirizzi disponibili IPv4 . È possibile calcolare l' IPv4 indirizzo disponibile sul nodo come segue:
-
Per impostazione predefinita, all'ENI vengono assegnati solo IPv4 gli indirizzi secondari. In tal caso:
Total IPv4 addresses available for Pods = Number of supported IPv4 addresses in the primary interface - 1
Ne sottraiamo uno dal conteggio totale poiché un IPv4 indirizzo verrà utilizzato come indirizzo principale dell'ENI e quindi non può essere assegnato ai Pod.
-
Se il cluster è stato configurato per un'alta densità di pod abilitando la funzione di delega dei prefissi, allora-
Total IPv4 addresses available for Pods = (Number of supported IPv4 addresses in the primary interface - 1) * 16
Qui, invece di allocare IPv4 indirizzi secondari, VPC Resource Controller effettuerà l'
/28 prefixes
allocazione e, pertanto, il numero complessivo di indirizzi IPv4 disponibili verrà incrementato di 16 volte.
Utilizzando la formula precedente, possiamo calcolare il numero massimo di pod per un nodo di lavoro Windows basato su un'istanza m5.large come segue:
-
Per impostazione predefinita, quando si esegue in modalità IP secondaria-
10 secondary IPv4 addresses per ENI - 1 = 9 available IPv4 addresses
-
Quando si utilizza
prefix delegation
-(10 secondary IPv4 addresses per ENI - 1) * 16 = 144 available IPv4 addresses
Per ulteriori informazioni sul numero di indirizzi IP che un tipo di istanza può supportare, consulta Indirizzi IP per interfaccia di rete per tipo di istanza.
Un'altra considerazione fondamentale è il flusso del traffico di rete. Con Windows esiste il rischio di esaurimento delle porte sui nodi con più di 100 servizi. Quando si verifica questa condizione, i nodi inizieranno a generare errori con il seguente messaggio:
«Creazione della policy non riuscita: hcnCreateLoad Balancer non riuscito in Win32: la porta specificata esiste già».
Per risolvere questo problema, utilizziamo Direct Server Return (DSR). DSR è un'implementazione della distribuzione asimmetrica del carico di rete. In altre parole, il traffico di richiesta e risposta utilizza percorsi di rete diversi. Questa funzionalità accelera la comunicazione tra i pod e riduce il rischio di esaurimento delle porte. Si consiglia pertanto di abilitare il DSR sui nodi Windows.
Il DSR è abilitato per impostazione predefinita in Windows Server SAC EKS Optimized. AMIs Per Windows Server 2019 LTSC EKS Optimized AMIs, sarà necessario abilitarlo durante il provisioning dell'istanza utilizzando lo script riportato di seguito e utilizzando Windows Server 2019 Full o Core come AMIFamily nel NodeGroup. eksctl
Vedi eksctl custom AMI
nodeGroups: - name: windows-ng instanceType: c5.xlarge minSize: 1 volumeSize: 50 amiFamily: WindowsServer2019CoreContainer ssh: allow: false
Per utilizzare DSR in Windows Server 2019 e versioni successive, è necessario specificare i seguenti flag kube-proxy
<powershell> [string]$EKSBinDir = "$env:ProgramFiles\Amazon\EKS" [string]$EKSBootstrapScriptName = 'Start-EKSBootstrap.ps1' [string]$EKSBootstrapScriptFile = "$EKSBinDir\$EKSBootstrapScriptName" (Get-Content $EKSBootstrapScriptFile).replace('"--proxy-mode=kernelspace",', '"--proxy-mode=kernelspace", "--feature-gates WinDSR=true", "--enable-dsr",') | Set-Content $EKSBootstrapScriptFile & $EKSBootstrapScriptFile -EKSClusterName "eks-windows" -APIServerEndpoint "https://<REPLACE-EKS-CLUSTER-CONFIG-API-SERVER>" -Base64ClusterCA "<REPLACE-EKSCLUSTER-CONFIG-DETAILS-CA>" -DNSClusterIP "172.20.0.10" -KubeletExtraArgs "--node-labels=alpha.eksctl.io/cluster-name=eks-windows,alpha.eksctl.io/nodegroup-name=windows-ng-ltsc2019 --register-with-taints=" 3>&1 4>&1 5>&1 6>&1 </powershell>
L'abilitazione del DSR può essere verificata seguendo le istruzioni nel blog di Microsoft Networking

Se preservare IPv4 gli indirizzi disponibili e ridurre al minimo gli sprechi è fondamentale per la sottorete, in genere si consiglia di evitare di utilizzare la modalità di delega dei prefissi, come indicato in Prefix Mode for Windows - When to avoid. Se si desidera continuare a utilizzare la delega dei prefissi, è possibile adottare misure per ottimizzare l'utilizzo degli indirizzi nella sottorete. IPv4 Vedi Configurazione dei parametri per la delega dei prefissi per istruzioni dettagliate su come ottimizzare la richiesta e il processo di allocazione degli indirizzi. IPv4 La regolazione di queste configurazioni può aiutarti a trovare un equilibrio tra la conservazione degli IPv4 indirizzi e i vantaggi della delega dei prefissi in termini di densità dei pod.
Quando si utilizza l'impostazione predefinita di assegnazione di IPv4 indirizzi secondari, attualmente non esistono configurazioni supportate per manipolare il modo in cui il VPC Resource Controller richiede e alloca gli indirizzi. IPv4 Più specificamente, warm-ip-target
sono supportate solo per minimum-ip-target
la modalità di delega dei prefissi. Tieni inoltre presente che in modalità IP secondaria, a seconda degli indirizzi IP disponibili sull'interfaccia, il VPC Resource Controller in genere alloca 3 IPv4 indirizzi inutilizzati sul nodo per tuo conto per mantenerlo caldo IPs per tempi di avvio più rapidi dei pod. Se desideri ridurre al minimo lo spreco di indirizzi IP non utilizzati, potresti pianificare più pod su un determinato nodo Windows in modo da utilizzare quanta più capacità possibile di indirizzi IP dell'ENI. Più esplicitamente, è possibile evitare che non vengano utilizzati a caldo IPs se tutti gli indirizzi IP dell'ENI sono già utilizzati dal nodo e dai pod in esecuzione. Un'altra soluzione alternativa per aiutarti a risolvere i vincoli relativi alla disponibilità degli indirizzi IP nelle tue sottoreti potrebbe essere quella di aumentare le dimensioni della sottorete o separare i nodi Windows nelle rispettive sottoreti dedicate.
Inoltre, è importante notare che al momento non IPv6 è supportato sui nodi Windows.
Opzioni CNI (Container Network Interface)
Il AWSVPC CNI è il plugin CNI de facto per i nodi di lavoro Windows e Linux. Sebbene il AWSVPC CNI soddisfi le esigenze di molti clienti, a volte è necessario prendere in considerazione alternative come una rete overlay per evitare l'esaurimento dell'IP. In questi casi, il CNI Calico può essere utilizzato al posto del CNI. AWSVPC Project Calico
Politiche di rete
È considerata una buona pratica passare dalla modalità predefinita di comunicazione aperta tra i pod del cluster Kubernetes alla limitazione dell'accesso in base alle policy di rete. L'open source Project Calico
Le istruzioni per l'installazione di Calico in EKS sono disponibili nella pagina Installazione di Calico su Amazon EKS.
Inoltre, i consigli forniti nella sezione Amazon EKS Best Practices Guide for Security - Network