Bantu tingkatkan halaman ini
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Anda dapat meningkatkan jumlah alamat IP yang dapat ditetapkan node ke Pod dengan menetapkan awalan IP, daripada menetapkan alamat IP sekunder individual ke node Anda.
Prasyarat
-
Anda membutuhkan cluster yang ada. Untuk menyebarkan satu, lihatBuat kluster Amazon EKS.
-
Subnet tempat node Amazon EKS Anda berada harus memiliki blok yang cukup berdekatan
/28
(untukIPv4
cluster) atau (untuk cluster) Classless Inter-DomainIPv6
Routing/80
(CIDR). Anda hanya dapat memiliki node Linux dalam sebuahIPv6
cluster. Menggunakan awalan IP dapat gagal jika alamat IP tersebar di seluruh subnet CIDR. Sebaiknya lakukan hal berikut:-
Menggunakan reservasi CIDR subnet sehingga meskipun ada alamat IP 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. Beban kerja Windows dan Linux 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 ke Pod daripada instans berbasis Nitro.
-
Untuk cluster dengan node Linux saja - Jika cluster Anda dikonfigurasi untuk
IPv4
keluarga, Anda harus memiliki versi1.9.0
atau yang lebih baru dari plugin Amazon VPC CNI untuk add-on Kubernetes 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 menginstal1.10.1
versi add-on. Jika versi plugin Anda lebih awal dari versi yang diperlukan, Anda harus memperbaruinya. Untuk informasi selengkapnya, lihat bagian update Assign IPs to Pod dengan Amazon VPC CNI. -
Untuk cluster dengan node Windows 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 Kubernetes dan versi platform Anda saat ini dengan mengganti
my-cluster
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}' -
Anda harus mengaktifkan dukungan Windows untuk cluster Anda. Untuk informasi selengkapnya, lihat Menerapkan node Windows pada kluster EKS.
-
Tetapkan awalan alamat IP ke node
Konfigurasikan cluster Anda untuk menetapkan awalan alamat IP ke node. Selesaikan prosedur yang cocok dengan sistem operasi node Anda.
Linux
-
Aktifkan parameter untuk menetapkan awalan ke antarmuka jaringan untuk Amazon VPC CNI. DaemonSet Saat Anda menerapkan klaster
1.21
atau yang lebih baru, versi1.10.1
atau yang lebih baru dari plugin Amazon VPC CNI untuk add-on Kubernetes akan di-deploy dengannya. Jika Anda membuat cluster denganIPv6
keluarga, pengaturan ini disetel ke secaratrue
default. Jika Anda membuat cluster denganIPv4
keluarga, pengaturan ini disetel ke secarafalse
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 yang berdekatan, Anda akan melihat kesalahan berikut di plugin Amazon VPC CNI untuk log Kubernetes.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 seluruh subnet. Untuk mengatasi kesalahan ini, buat subnet baru dan luncurkan Pod di sana, atau gunakan reservasi CIDR EC2 subnet Amazon untuk memesan ruang di dalam subnet untuk digunakan dengan penetapan awalan. Untuk informasi selengkapnya, lihat Reservasi CIDR Subnet di Panduan Pengguna Amazon VPC.
-
Jika Anda berencana untuk menerapkan grup node terkelola tanpa template peluncuran, atau dengan template peluncuran yang belum Anda tentukan ID AMI, dan Anda menggunakan versi plugin Amazon VPC CNI untuk Kubernetes pada atau lebih baru dari versi yang tercantum dalam prasyarat, lalu lewati ke langkah berikutnya. Grup node terkelola secara otomatis menghitung jumlah maksimum Pod untuk Anda.
Jika Anda menerapkan grup node yang dikelola sendiri atau grup node terkelola dengan template peluncuran yang telah Anda tentukan ID AMI, Anda harus menentukan jumlah maksimum Pod yang direkomendasikan Amazon EKS untuk node Anda. Ikuti petunjuk di Amazon EKS Pod maksimum yang direkomendasikan untuk setiap jenis EC2 instans Amazon, tambahkan
--cni-prefix-delegation-enabled
ke langkah 3. Perhatikan output untuk digunakan di langkah selanjutnya.penting
Grup node terkelola memberlakukan jumlah maksimum pada nilai.
maxPods
Untuk contoh dengan kurang dari 30 v CPUs 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 klaster
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_TARGET, WARM_IP_TARGET, dan MINIMUM_IP_TARGET aktif
. GitHub Anda dapat mengganti
example values
dengan nilai yang lebih besar dari nol.-
WARM_PREFIX_TARGET
kubectl set env ds aws-node -n kube-system WARM_PREFIX_TARGET=1
-
WARM_IP_TARGET
atauMINIMUM_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
-
-
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 Amazon EC2 . Kemampuan ini tidak didukung pada Windows. Untuk opsi yang disertakan
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 ID AMI yang ditentukan — Selesaikan prosedur di Buat grup node terkelola untuk klaster Anda. Grup node terkelola secara otomatis menghitung
max-pods
nilai yang direkomendasikan Amazon EKS untuk Anda. -
Dengan template peluncuran dengan ID AMI tertentu — Dalam template peluncuran Anda, tentukan ID AMI Amazon EKS yang dioptimalkan, atau AMI kustom yang dibuat dari AMI Amazon EKS yang dioptimalkan, lalu terapkan grup node menggunakan template peluncuran dan berikan data pengguna berikut di template peluncuran. Data pengguna ini meneruskan argumen ke dalam
bootstrap.sh
file. Untuk informasi selengkapnya tentang file bootstrap, lihat bootstrap.shdi 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 AMI kustom yang tidak dibangun dari AMI Amazon EKS yang dioptimalkan, maka Anda perlu membuat konfigurasi sendiri.
-
catatan
Jika Anda juga ingin menetapkan alamat IP ke Pod dari subnet yang berbeda dari instans, maka Anda perlu mengaktifkan kapabilitas pada langkah ini. Untuk informasi selengkapnya, lihat Menerapkan Pod di subnet alternatif dengan jaringan khusus.
-
Windows
-
Aktifkan penugasan awalan IP.
-
Buka
amazon-vpc-cni
ConfigMap
untuk mengedit.kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
-
Tambahkan baris berikut ke
data
bagian.enable-windows-prefix-delegation: "true"
-
Simpan file dan tutup editor.
-
Konfirmasikan bahwa baris telah ditambahkan ke
ConfigMap
.kubectl get configmap -n kube-system amazon-vpc-cni -o "jsonpath={.data.enable-windows-prefix-delegation}"
Jika output yang dikembalikan tidak
true
, maka mungkin ada kesalahan. Coba selesaikan langkahnya lagi.penting
Bahkan jika subnet Anda memiliki alamat IP yang tersedia, jika subnet tidak memiliki
/28
blok yang berdekatan, Anda akan melihat kesalahan berikut di plugin Amazon VPC CNI untuk log Kubernetes.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 seluruh subnet. Untuk mengatasi kesalahan ini, buat subnet baru dan luncurkan Pod di sana, atau gunakan reservasi CIDR EC2 subnet Amazon untuk memesan ruang di dalam subnet untuk digunakan dengan penetapan awalan. Untuk informasi selengkapnya, lihat Reservasi CIDR Subnet di Panduan Pengguna Amazon VPC.
-
-
(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
-
Ganti
example values
dengan nilai lebih besar dari nol dan tambahkan entri yang Anda butuhkan kedata
bagianConfigMap
. Jika Anda menetapkan nilai untuk salah satuwarm-ip-target
atauminimum-ip-target
, nilai akan menggantikan nilai apa pun yang ditetapkan untuk.warm-prefix-target
warm-prefix-target: "1" warm-ip-target: "5" minimum-ip-target: "2"
-
Simpan file dan tutup editor.
-
-
Buat grup node Windows dengan setidaknya satu jenis instans Amazon EC2 Nitro. Untuk daftar jenis instans Nitro, lihat Instans yang dibangun di Sistem Nitro di Panduan Pengguna Amazon EC2 . Secara default, jumlah maksimum Pod yang dapat Anda deploy ke sebuah 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 selengkapnya tentang parameter konfigurasi untuk skrip bootstrap Windows, lihatParameter konfigurasi skrip bootstrap.
Tentukan Pod maksimal dan alamat IP yang tersedia
-
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
-
Jelaskan salah satu node untuk menentukan nilai
max-pods
untuk node dan jumlah alamat IP yang tersedia. Ganti192.168.30.193
denganIPv4
alamat atas nama salah satu node Anda yang 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 Pod yang Kubernetes akan deploy ke node, meskipun144
alamat IP tersedia.