Aumenta gli indirizzi IP disponibili per il tuo EKS nodo Amazon - 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à.

Aumenta gli indirizzi IP disponibili per il tuo EKS nodo Amazon

Puoi aumentare il numero di indirizzi IP a cui i nodi possono assegnare Pods assegnando prefissi IP, anziché assegnare singoli indirizzi IP secondari ai nodi.

Completa quanto segue prima di iniziare la procedura:

  • Esamina le considerazioni.

  • È necessario un cluster esistente. Per implementarne uno, consulta Crea un EKS cluster Amazon.

  • Le sottoreti in cui si trovano i tuoi EKS nodi Amazon devono avere un numero sufficiente di blocchi Classless Inter-Domain /28 Routing () contigui /80 (per IPv4 i cluster) o (per IPv6 i cluster). CIDR Puoi disporre solo di nodi Linux in un cluster IPv6. L'utilizzo dei prefissi IP può fallire se gli indirizzi IP sono sparsi nella sottorete. CIDR È preferibile quanto segue:

    • Utilizzando una CIDR prenotazione di sottorete in modo che, anche se alcuni indirizzi IP all'interno dell'intervallo riservato sono ancora in uso, al momento del rilascio, gli indirizzi IP non vengono riassegnati. Ciò assicura che i prefissi siano disponibili per l'assegnazione senza segmentazione.

    • Usa nuove sottoreti utilizzate specificamente per l'esecuzione di carichi di lavoro a cui sono assegnati i prefissi IP. Entrambi Windows e Linux i carichi di lavoro possono essere eseguiti nella stessa sottorete quando si assegnano prefissi IP.

  • Per assegnare prefissi IP ai nodi, questi devono essere basati su Nitro. AWS Le istanze che non sono basate su Nitro continuano ad allocare singoli indirizzi IP secondari, ma hanno un numero significativamente inferiore di indirizzi IP da assegnare Pods rispetto a Nitro-based le istanze lo fanno.

  • Per cluster con Linux solo nodi: se il cluster è configurato per la IPv4 famiglia, è necessario disporre della versione 1.9.0 o successiva di Amazon VPC CNI plugin for Kubernetes componente aggiuntivo installato. Puoi controllare la tua versione attuale con il seguente comando.

    kubectl describe daemonset aws-node --namespace kube-system | grep Image | cut -d "/" -f 2

    Se il cluster è configurato per la famiglia IPv6, è necessario che sia installata la versione 1.10.1 del componente aggiuntivo. Se la versione del plugin è precedente a quelle richieste, è necessario aggiornarla. Per ulteriori informazioni, consulta le sezioni di aggiornamento di Assign IPs to Pods con Amazon. VPC CNI

  • Per cluster con Windows solo nodi:

    • La versione del cluster e la versione della piattaforma relativa devono essere uguali o successive alle versioni indicate nella tabella seguente. Per aggiornare la versione del cluster, consulta Aggiorna il cluster esistente alla nuova versione di Kubernetes. Se il tuo cluster non ha la versione minima della piattaforma, non puoi assegnare prefissi IP ai nodi finché Amazon non EKS avrà aggiornato la versione della piattaforma.

      Versione di Kubernetes Versione della piattaforma

      1.27

      eks.3

      1.26

      eks.4

      1.25

      eks.5

      Puoi controllare la tua versione attuale Kubernetes e la versione della piattaforma sostituendo my-cluster nel comando seguente con il nome del cluster e quindi eseguendo il comando modificato:aws eks describe-cluster --name my-cluster --query 'cluster.{"Kubernetes Version": version, "Platform Version": platformVersion}'.

    • Windows supporto abilitato per il tuo cluster. Per ulteriori informazioni, consulta Distribuisci nodi Windows su cluster EKS.

      1. Configura il cluster per assegnare i prefissi degli indirizzi IP ai nodi. Completa la procedura nella scheda corrispondente al sistema operativo del tuo nodo.

        Linux
        1. Abilita il parametro per assegnare prefissi alle interfacce di rete per Amazon VPC CNI DaemonSet. Quando si distribuisce un 1.21 cluster, una versione 1.10.1 o una versione successiva di Amazon VPC CNI plugin for Kubernetes Il componente aggiuntivo viene distribuito con esso. Se hai creato il cluster con la famiglia IPv6, questa impostazione era su true di default. Se hai creato il cluster con la famiglia IPv4, questa impostazione era su false di default.

          kubectl set env daemonset aws-node -n kube-system ENABLE_PREFIX_DELEGATION=true
          Importante

          Anche se la sottorete dispone di indirizzi IP disponibili, se la sottorete non dispone di /28 blocchi contigui, verrà visualizzato il seguente errore nel Amazon VPC CNI plugin for Kubernetes registri.

InsufficientCidrBlocks: The specified subnet does not have enough free cidr blocks to satisfy the request

Ciò può verificarsi a causa della frammentazione degli indirizzi IP secondari esistenti distribuiti in una sottorete. Per risolvere questo errore, crea una nuova sottorete e avvia Pods lì, oppure usa una CIDR prenotazione di EC2 sottorete Amazon per riservare spazio all'interno di una sottorete da utilizzare con l'assegnazione dei prefissi. Per ulteriori informazioni, consulta Subnet CIDR reservations nella Amazon VPC User Guide. ... Se prevedi di implementare un gruppo di nodi gestiti senza un modello di lancio o con un modello di lancio in cui non hai specificato un AMI ID e stai utilizzando una versione di Amazon VPC CNI plugin for Kubernetes corrispondente o successiva alle versioni elencate nei prerequisiti, vai al passaggio successivo. I gruppi di nodi gestiti calcolano automaticamente il numero massimo di Pods per te.

+ Se stai implementando un gruppo di nodi autogestito o un gruppo di nodi gestiti con un modello di lancio in cui hai specificato un AMI ID, devi determinare il numero massimo EKS consigliato da Amazon Pods per i tuoi nodi. Segui le istruzioni riportate nella sezione numero massimo di Pods EKS consigliato da Amazon per ogni tipo di EC2 istanza Amazon, che si aggiungono --cni-prefix-delegation-enabled al passaggio 3. Annotare l'output restituito per l'utilizzo in un passaggio successivo.

+IMPORTANT: I gruppi di nodi gestiti impongono un numero massimo sul valore di. maxPods Per le istanze con meno di 30 vCPUs il numero massimo è 110 e per tutte le altre istanze il numero massimo è 250. Questo numero massimo viene applicato indipendentemente dal fatto che la delega del prefisso sia abilitata o meno. ... Se stai utilizzando un cluster 1.21 o una versione successiva configurata perIPv6, vai al passaggio successivo.

+ Specificate i parametri in una delle seguenti opzioni. Per determinare quale opzione è giusta per te e quale valore darle, consulta WARM_ _, PREFIX _IP_ TARGET e WARM MINIMUM _IP_ TARGET su TARGET GitHub.

+ È possibile sostituire il example values con un valore maggiore di zero.

+ ** WARM_PREFIX_TARGET

+

kubectl set env ds aws-node -n kube-system WARM_PREFIX_TARGET=1
  • WARM_IP_TARGET o MINIMUM_IP_TARGET – Se uno dei due valori è impostato, sovrascrive qualsiasi valore impostato per WARM_PREFIX_TARGET.

    kubectl set env ds aws-node -n kube-system WARM_IP_TARGET=5
kubectl set env ds aws-node -n kube-system MINIMUM_IP_TARGET=2
  1. Crea uno dei seguenti tipi di gruppi di nodi con almeno un tipo di istanza Amazon EC2 Nitro Amazon Linux 2. Per un elenco dei tipi di istanze Nitro, consulta Istanze costruite sul sistema Nitro nella Amazon EC2 User Guide. Questa funzionalità non è supportata su Windows. Per le opzioni che includono 110, sostituiscilo con il valore del passaggio 3 (consigliato) o con il tuo valore.

    • Gestione automatica: distribuisci il gruppo di nodi utilizzando le istruzioni in Creare nodi Amazon Linux autogestiti. Specificate il testo seguente per il parametro. BootstrapArguments

      --use-max-pods false --kubelet-extra-args '--max-pods=110'

      Se si utilizza eksctl per creare il gruppo di nodi, è possibile utilizzare il seguente comando.

      eksctl create nodegroup --cluster my-cluster --managed=false --max-pods-per-node 110
    • Gestito: implementare il gruppo di nodi utilizzando una delle opzioni seguenti:

      • Senza un modello di avvio o con un modello di avvio senza un AMI ID specificato: completa la procedura in Creare un gruppo di nodi gestito per il cluster. I gruppi di nodi gestiti calcolano automaticamente il max-pods valore EKS consigliato da Amazon per te.

      • Con un modello di lancio con un AMI ID specificato: nel modello di lancio, specifica un AMI ID EKS ottimizzato per Amazon o uno personalizzato AMI basato su Amazon EKS OptimizedAMI, quindi distribuisci il gruppo di nodi utilizzando un modello di lancio e fornisci i seguenti dati utente nel modello di lancio. Questi dati utente passano argomenti nel file bootstrap.sh. Per ulteriori informazioni sul file bootstrap, consulta bootstrap.sh su GitHub.

        /etc/eks/bootstrap.sh my-cluster \ --use-max-pods false \ --kubelet-extra-args '--max-pods=110'

        Se si utilizza eksctl per creare il gruppo di nodi, è possibile utilizzare il comando seguente.

        eksctl create nodegroup --cluster my-cluster --max-pods-per-node 110

        Se hai creato una configurazione personalizzata AMI non basata su Amazon EKS OptimizedAMI, devi creare tu stesso la configurazione personalizzata.

        Nota

        Se desideri assegnare indirizzi IP anche a Pods da una sottorete diversa da quella dell'istanza, è necessario abilitare la funzionalità in questo passaggio. Per ulteriori informazioni, consulta Implementazione pods in sottoreti alternative con rete personalizzata.

        Windows
  2. Abilita l'assegnazione di prefissi IP.

    1. Apri amazon-vpc-cni ConfigMap per la modifica.

      kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
    2. Aggiungi la seguente riga al file data:

      enable-windows-prefix-delegation: "true"
    3. Salva il file e chiudi l'editor.

    4. Accertati che la riga sia stata aggiunta a ConfigMap.

      kubectl get configmap -n kube-system amazon-vpc-cni -o "jsonpath={.data.enable-windows-prefix-delegation}"

      Se l'output restituito non lo ètrue, potrebbe essersi verificato un errore. Prova a completare di nuovo il passaggio.

      Importante

      Anche se la sottorete dispone di indirizzi IP disponibili, se non dispone di blocchi /28 contigui disponibili, verrà visualizzato il seguente errore negli eventi dei nodi:

"failed to allocate a private IP/Prefix address: InsufficientCidrBlocks: The specified subnet does not have enough free cidr blocks to satisfy the request"

Ciò può verificarsi a causa della frammentazione degli indirizzi IP secondari esistenti distribuiti in una sottorete. Per risolvere questo errore, crea una nuova sottorete e avvia Pods lì, oppure usa una CIDR prenotazione di EC2 sottorete Amazon per riservare spazio all'interno di una sottorete da utilizzare con l'assegnazione dei prefissi. Per ulteriori informazioni, consulta Subnet CIDR reservations nella Amazon VPC User Guide. ... (Facoltativo) Specificate una configurazione aggiuntiva per controllare il comportamento di pre-scalabilità e scalabilità dinamica del cluster. Per ulteriori informazioni, consulta Opzioni di configurazione con la modalità di delega dei prefissi su Windows on. GitHub

+... Apri il file amazon-vpc-cni ConfigMap per modificarlo.

+

kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
  1. Sostituisci il example values con un valore maggiore di zero e aggiungete le voci desiderate alla data sezione diConfigMap. Se imposti un valore per warm-ip-target o minimum-ip-target, il valore sostituisce qualsiasi valore impostato per warm-prefix-target.

    warm-prefix-target: "1" warm-ip-target: "5" minimum-ip-target: "2"
  2. Salva il file e chiudi l'editor.

    1. Crea Windows gruppi di nodi con almeno un Amazon EC2 Nitro tipo di istanza. Per un elenco di Nitro tipi di istanze, consulta Istanze costruite sul sistema Nitro nella Amazon EC2 User Guide. Per impostazione predefinita, il numero massimo di Pods che è possibile distribuire su un nodo è 110. Se vuoi aumentare o diminuire questo numero, specifica quanto segue nei dati utente per la configurazione di bootstrap. Replace (Sostituisci) max-pods-quantity con il valore massimo dei pod.

      -KubeletExtraArgs '--max-pods=max-pods-quantity'

      Se stai distribuendo gruppi di nodi gestiti, questa configurazione deve essere aggiunta nel modello di lancio. Per ulteriori informazioni, consulta Personalizza i nodi gestiti con modelli di lancio. Per ulteriori informazioni sui parametri di configurazione per Windows script di bootstrap, vediParametri di configurazione dello script di bootstrap. Dopo aver implementato i nodi, visualizzare i nodi del cluster.

      +

      kubectl get nodes

      + Un esempio di output è il seguente.

      +

      NAME STATUS ROLES AGE VERSION ip-192-168-22-103.region-code.compute.internal Ready <none> 19m v1.XX.X-eks-6b7464 ip-192-168-97-94.region-code.compute.internal Ready <none> 19m v1.XX.X-eks-6b7464
      1. Descrivi uno dei nodi per determinare il valore di max-pods per il nodo e il numero di indirizzi IP disponibili. Replace (Sostituisci) 192.168.30.193 con l'IPv4indirizzo nel nome di uno dei nodi restituito nell'output precedente.

        kubectl describe node ip-192-168-30-193.region-code.compute.internal | grep 'pods\|PrivateIPv4Address'

        Di seguito viene riportato un output di esempio:

        pods: 110 vpc.amazonaws.com/PrivateIPv4Address: 144

        Nell'output precedente, 110 è il numero massimo di Pods that Kubernetes verrà distribuito sul nodo, anche se 144 Gli indirizzi IP sono disponibili.