Tingkatkan alamat IP yang tersedia untuk EKS node Amazon Anda - Amazon EKS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tingkatkan alamat IP yang tersedia untuk EKS node Amazon Anda

Anda dapat meningkatkan jumlah alamat IP yang dapat ditetapkan oleh node Pods dengan menetapkan awalan IP, daripada menetapkan alamat IP sekunder individual ke node Anda.

Selesaikan yang berikut ini sebelum Anda memulai prosedur:

  • Tinjau pertimbangannya.

  • Anda membutuhkan cluster yang ada. Untuk menyebarkan satu, lihatBuat EKS klaster Amazon.

  • Subnet tempat EKS node Amazon Anda berada harus memiliki blok yang cukup berdekatan /28 (untuk IPv4 cluster) atau (untuk cluster) Classless Inter-Domain IPv6 Routing /80 (). CIDR Anda hanya dapat memiliki node Linux dalam sebuah IPv6 cluster. Menggunakan awalan IP dapat gagal jika alamat IP tersebar di seluruh subnet. CIDR Kami merekomendasikan bahwa berikut:

    • Menggunakan CIDR reservasi subnet sehingga meskipun alamat IP apa pun dalam rentang cadangan masih digunakan, setelah dirilis, alamat IP tidak dipindahkan. Ini memastikan bahwa awalan tersedia untuk alokasi tanpa segmentasi.

    • Gunakan subnet baru yang secara khusus digunakan untuk menjalankan beban kerja yang awalan IP ditetapkan. Keduanya Windows and Linux beban kerja dapat berjalan di subnet yang sama saat menetapkan awalan IP.

  • Untuk menetapkan awalan IP ke node Anda, node Anda harus berbasis Nitro. AWS Instans yang tidak berbasis Nitro terus mengalokasikan alamat IP sekunder individual, tetapi memiliki jumlah alamat IP yang jauh lebih rendah untuk ditetapkan Pods daripada Nitro-based contoh lakukan.

  • Untuk cluster dengan Linux node saja — Jika klaster Anda dikonfigurasi untuk IPv4 keluarga, Anda harus memiliki versi 1.9.0 atau yang lebih baru Amazon VPC CNI plugin for Kubernetes add-on diinstal. Anda dapat memeriksa versi Anda saat ini dengan perintah berikut.

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

    Jika cluster Anda dikonfigurasi untuk IPv6 keluarga, Anda harus menginstal 1.10.1 versi add-on. Jika versi plugin Anda lebih awal dari versi yang diperlukan, Anda harus memperbaruinya. Untuk informasi selengkapnya, lihat bagian pembaruan dari Menetapkan IPs ke Pod dengan Amazon VPC CNI.

  • Untuk cluster dengan Windows node saja::

    • Cluster Anda dan versi platformnya harus di, atau lebih lambat dari versi dalam tabel berikut. Untuk memutakhirkan versi cluster Anda, lihatPerbarui klaster yang ada ke versi Kubernetes baru. Jika klaster Anda tidak pada versi platform minimum, maka Anda tidak dapat menetapkan awalan IP ke node Anda hingga Amazon EKS memperbarui versi platform Anda.

      Versi Kubernetes Versi platform

      1.27

      eks.3

      1.26

      eks.4

      1.25

      eks.5

      Anda dapat memeriksa saat ini Kubernetes dan versi platform dengan mengganti my-cluster dalam perintah berikut dengan nama cluster Anda dan kemudian menjalankan perintah yang dimodifikasi:aws eks describe-cluster --name my-cluster --query 'cluster.{"Kubernetes Version": version, "Platform Version": platformVersion}'.

    • Windows dukungan diaktifkan untuk cluster Anda. Untuk informasi selengkapnya, lihat Menyebarkan node Windows pada cluster EKS.

      1. Konfigurasikan cluster Anda untuk menetapkan awalan alamat IP ke node. Selesaikan prosedur pada tab yang cocok dengan sistem operasi node Anda.

        Linux
        1. Aktifkan parameter untuk menetapkan awalan ke antarmuka jaringan untuk Amazon VPC CNI DaemonSet. Saat Anda menerapkan klaster, versi, 1.10.1 atau versi yang lebih baru 1.21 Amazon VPC CNI plugin for Kubernetes add-on digunakan dengannya. Jika Anda membuat cluster dengan IPv6 keluarga, pengaturan ini disetel ke secara true default. Jika Anda membuat cluster dengan IPv4 keluarga, pengaturan ini disetel ke secara false default.

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

          Bahkan jika subnet Anda memiliki alamat IP yang tersedia, jika subnet tidak memiliki /28 blok bersebelahan yang tersedia, Anda akan melihat kesalahan berikut di Amazon VPC CNI plugin for Kubernetes log.

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

Hal ini dapat terjadi karena fragmentasi alamat IP sekunder yang ada tersebar di subnet. Untuk mengatasi kesalahan ini, buat subnet baru dan luncurkan Pods di sana, atau gunakan CIDR reservasi EC2 subnet Amazon untuk memesan ruang dalam subnet untuk digunakan dengan penetapan awalan. Untuk informasi selengkapnya, lihat CIDRReservasi subnet di VPC Panduan Pengguna Amazon. ... Jika Anda berencana untuk menerapkan grup node terkelola tanpa templat peluncuran, atau dengan templat peluncuran yang belum Anda tentukan AMI ID, dan Anda menggunakan versi Amazon VPC CNI plugin for Kubernetes pada atau lebih lambat dari versi yang tercantum dalam prasyarat, lalu lompat ke langkah berikutnya. Grup node terkelola secara otomatis menghitung jumlah maksimum Pods untuk Anda.

+ Jika Anda menerapkan grup node yang dikelola sendiri atau grup node terkelola dengan templat peluncuran yang telah Anda tentukan AMI ID, maka Anda harus menentukan jumlah maksimum yang EKS disarankan Amazon Pods untuk node Anda. Ikuti petunjuk di Pod maksimum yang EKS direkomendasikan Amazon untuk setiap jenis EC2 instans Amazon, tambahkan --cni-prefix-delegation-enabled ke langkah 3. Perhatikan output untuk digunakan di langkah selanjutnya.

+IMPORTANT: Grup node terkelola memberlakukan jumlah maksimum pada nilai. maxPods Untuk contoh dengan kurang dari 30 vCPUs jumlah maksimum adalah 110 dan untuk semua contoh lainnya jumlah maksimum adalah 250. Jumlah maksimum ini diterapkan apakah delegasi awalan diaktifkan atau tidak. ... Jika Anda menggunakan cluster 1.21 atau yang lebih baru yang dikonfigurasiIPv6, lewati ke langkah berikutnya.

+ Tentukan parameter di salah satu opsi berikut. Untuk menentukan opsi mana yang tepat untuk Anda dan nilai apa yang akan diberikan untuknya, lihat WARM_ _, PREFIX _IP_ TARGETTARGET, dan WARM MINIMUM _IP_ di TARGET GitHub.

+ Anda dapat mengganti example values dengan nilai lebih besar dari nol.

+ ** WARM_PREFIX_TARGET

+

kubectl set env ds aws-node -n kube-system WARM_PREFIX_TARGET=1
  • WARM_IP_TARGETatau MINIMUM_IP_TARGET — Jika salah satu nilai ditetapkan, itu akan menggantikan nilai yang ditetapkan untuk. 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. Buat salah satu jenis grup node berikut dengan setidaknya satu jenis instans Amazon EC2 Nitro Amazon Linux 2. Untuk daftar jenis instans Nitro, lihat Instans yang dibangun di Sistem Nitro di Panduan Pengguna AmazonEC2. Kemampuan ini tidak didukung pada Windows. Untuk opsi yang mencakup 110, ganti dengan nilai dari langkah 3 (disarankan), atau nilai Anda sendiri.

    • Dikelola sendiri — Menerapkan grup node menggunakan instruksi di Buat node Amazon Linux yang dikelola sendiri. Tentukan teks berikut untuk BootstrapArgumentsparameter.

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

      Jika Anda menggunakan eksctl untuk membuat grup node, Anda dapat menggunakan perintah berikut.

      eksctl create nodegroup --cluster my-cluster --managed=false --max-pods-per-node 110
    • Dikelola - Terapkan grup node Anda menggunakan salah satu opsi berikut:

      • Tanpa template peluncuran atau dengan template peluncuran tanpa AMI ID yang ditentukan — Selesaikan prosedur di Buat grup node terkelola untuk klaster Anda. Grup node terkelola secara otomatis menghitung max-pods nilai yang EKS direkomendasikan Amazon untuk Anda.

      • Dengan template peluncuran dengan AMI ID tertentu — Di template peluncuran Anda, tentukan AMI ID yang EKS dioptimalkan Amazon, atau kustom yang AMI dibuat dari Amazon yang EKS dioptimalkanAMI, lalu terapkan grup node menggunakan templat peluncuran dan berikan data pengguna berikut di template peluncuran. Data pengguna ini meneruskan argumen ke dalam bootstrap.sh file. Untuk informasi lebih lanjut tentang file bootstrap, lihat bootstrap.sh di GitHub.

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

        Jika Anda menggunakan eksctl untuk membuat grup node, Anda dapat menggunakan perintah berikut.

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

        Jika Anda telah membuat kustom AMI yang tidak dibangun dari Amazon yang EKS dioptimalkanAMI, maka Anda perlu membuat konfigurasi sendiri.

        catatan

        Jika Anda juga ingin menetapkan alamat IP ke Pods dari subnet yang berbeda dari instance, maka Anda perlu mengaktifkan kemampuan pada langkah ini. Untuk informasi selengkapnya, lihat Deploy pods dalam subnet alternatif dengan jaringan khusus.

        Windows
  2. Aktifkan penugasan awalan IP.

    1. Buka amazon-vpc-cni ConfigMap untuk mengedit.

      kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
    2. Tambahkan baris berikut ke data bagian.

      enable-windows-prefix-delegation: "true"
    3. Simpan file dan tutup editor.

    4. Konfirmasikan bahwa baris telah ditambahkan keConfigMap.

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

      Jika output yang dikembalikan tidaktrue, maka mungkin ada kesalahan. Coba selesaikan langkahnya lagi.

      penting

      Bahkan jika subnet Anda memiliki alamat IP yang tersedia, jika subnet tidak memiliki /28 blok bersebelahan yang tersedia, Anda akan melihat kesalahan berikut dalam peristiwa node.

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

Hal ini dapat terjadi karena fragmentasi alamat IP sekunder yang ada tersebar di subnet. Untuk mengatasi kesalahan ini, buat subnet baru dan luncurkan Pods di sana, atau gunakan CIDR reservasi EC2 subnet Amazon untuk memesan ruang dalam subnet untuk digunakan dengan penetapan awalan. Untuk informasi selengkapnya, lihat CIDRReservasi subnet di VPC Panduan Pengguna Amazon. ... (Opsional) Tentukan konfigurasi tambahan untuk mengontrol perilaku pra-penskalaan dan penskalaan dinamis untuk klaster Anda. Untuk informasi selengkapnya, lihat Opsi konfigurasi dengan mode Delegasi Awalan di Windows aktif. GitHub

+.... Buka amazon-vpc-cni ConfigMap untuk mengedit.

+

kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
  1. Ganti example values dengan nilai lebih besar dari nol dan tambahkan entri yang Anda butuhkan ke data bagianConfigMap. Jika Anda menetapkan nilai untuk salah satu warm-ip-target atauminimum-ip-target, nilai akan menggantikan nilai yang ditetapkan untuk. warm-prefix-target

    warm-prefix-target: "1" warm-ip-target: "5" minimum-ip-target: "2"
  2. Simpan file dan tutup editor.

    1. Buat Windows grup node dengan setidaknya satu Amazon EC2 Nitro jenis contoh. Untuk daftar Nitro jenis instans, lihat Instans yang dibangun di Sistem Nitro di EC2 Panduan Pengguna Amazon. Secara default, jumlah maksimum Pods yang dapat Anda terapkan ke node adalah 110. Jika Anda ingin menambah atau mengurangi angka itu, tentukan yang berikut ini dalam data pengguna untuk konfigurasi bootstrap. Ganti max-pods-quantity dengan nilai pod maks Anda.

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

      Jika Anda menerapkan grup node terkelola, konfigurasi ini perlu ditambahkan dalam template peluncuran. Untuk informasi selengkapnya, lihat Sesuaikan node terkelola dengan templat peluncuran. Untuk informasi lebih lanjut tentang parameter konfigurasi untuk Windows skrip bootstrap, lihatParameter konfigurasi skrip bootstrap. Setelah node Anda di-deploy, lihat node di cluster Anda.

      +

      kubectl get nodes

      + Contoh output adalah sebagai berikut.

      +

      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. Jelaskan salah satu node untuk menentukan nilai max-pods untuk node dan jumlah alamat IP yang tersedia. Ganti 192.168.30.193 dengan IPv4 alamat atas nama salah satu node Anda dikembalikan pada output sebelumnya.

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

        Contoh output adalah sebagai berikut.

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

        Pada output sebelumnya, 110 adalah jumlah maksimum Pods itu Kubernetes akan menyebar ke node, meskipun 144 Alamat IP tersedia.