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.
Konfigurasikan pemilihan subnet untuk alamat IP Pod
Berlaku untuk: Node Linux dengan instans Amazon EC2
Plugin Amazon VPC CNI untuk Kubernetes membuat secondary elastic network interface (ENI) pada node Anda dan menetapkan alamat IP dari ENI tersebut ke Pod. Secara default, VPC CNI membuat ENI sekunder di subnet yang sama dengan antarmuka jaringan utama node. Anda dapat mengontrol subnet mana yang digunakan CNI VPC untuk alamat IP Pod melalui metode berikut:
-
Penemuan subnet yang disempurnakan — VPC CNI secara otomatis menemukan dan menggunakan subnet yang ditandai
kubernetes.io/role/cnidengan VPC dan Availability Zone yang sama. Memerlukan VPC CNI versi 1.18.0 atau yang lebih baru. Kami merekomendasikan metode ini untuk sebagian besar kasus penggunaan. -
Jaringan khusus - Tentukan subnet dan grup keamanan secara manual per Availability Zone menggunakan sumber daya
ENIConfigkhusus. Untuk informasi selengkapnya, lihat Menerapkan Pod di subnet alternatif dengan jaringan khusus.
catatan
Jaringan khusus diutamakan ketika kedua fitur diaktifkan.
Penemuan subnet yang disempurnakan
VPC CNI versi 1.18.0 dan yang lebih baru memungkinkan penemuan subnet yang disempurnakan secara default (). ENABLE_SUBNET_DISCOVERY=true VPC CNI secara otomatis menemukan subnet di VPC dan Availability Zone yang sama dengan node, kemudian menggunakannya untuk membuat ENI sekunder dan mengalokasikan alamat IP Pod. Ini memperluas ruang alamat IP yang tersedia tanpa ENIConfig konfigurasi manual.
Untuk memverifikasi fitur diaktifkan:
kubectl describe ds aws-node -n kube-system | grep ENABLE_SUBNET_DISCOVERY
Untuk menonaktifkan fitur ini, atur ENABLE_SUBNET_DISCOVERY=false pada file aws-node DaemonSet.
Perilaku tag subnet (kubernetes. io/role/cni)
kubernetes.io/role/cniTag mengontrol cara VPC CNI memperlakukan subnet untuk operasi ENI dan alokasi IP Pod. Tag memiliki efek yang berbeda tergantung pada apakah VPC CNI membuat ENI baru atau merekonsiliasi yang sudah ada.
penting
Mekanisme penandaan Cluster-scoped dan eksklusif hanya tersedia mulai dari versi VPC v1.22.2 CNI. Sebelum versi ini, hanya perilaku keikutsertaan standar yang tersedia melalui tagkubernetes.io/role/cni=1.
Nilai tag
Tabel berikut merangkum bagaimana setiap nilai tag mempengaruhi perilaku subnet:
| Nilai tanda | Kreasi ENI baru | Rekonsiliasi ENI yang ada |
|---|---|---|
|
|
Opt-in: VPC CNI membuat ENI baru di subnet ini. |
ENI tetap tersedia untuk alokasi IP Pod. |
|
|
Dikecualikan: VPC CNI tidak membuat ENI baru di subnet ini. |
Dikecualikan: VPC CNI mengecualikan ENI yang ada di subnet ini dari alokasi IP Pod. Tidak ada IP Pod baru yang ditetapkan dari ENI ini. |
|
Absen (tidak ada tag) |
Tidak digunakan untuk ENI baru: VPC CNI tidak memilih subnet sekunder tanpa tag untuk pembuatan ENI baru. Subnet utama (subnet tempat node diluncurkan) masih digunakan untuk pembuatan ENI baru bahkan tanpa tag, untuk kompatibilitas mundur. |
Tidak ada gangguan: ENI yang ada di subnet yang tidak ditandai tetap tersedia untuk alokasi IP Pod. VPC CNI tidak menghapus atau mengecualikan ENI ini. |
Perilaku penciptaan versus rekonsiliasi
VPC CNI sengaja menerapkan kebijakan yang berbeda saat membuat ENI baru dan saat merekonsiliasi ENI yang ada:
-
Pembuatan (fail-closed untuk subnet sekunder): Ketika VPC CNI perlu membuat ENI sekunder baru, itu hanya menggunakan subnet sekunder yang ditandai secara eksplisit.
kubernetes.io/role/cni=1Subnet sekunder yang tidak ditandai tidak pernah dipilih untuk pembuatan ENI baru. Ini memastikan antarmuka jaringan baru hanya ditempatkan di subnet yang telah disetujui secara eksplisit oleh administrator. -
Rekonsiliasi (fail-open untuk subnet yang tidak ditandai): Ketika VPC CNI dimulai atau merekonsiliasi ENI yang sudah ada yang sudah terpasang ke node, itu tidak mengecualikan ENI karena subnet mereka tidak memiliki tag.
kubernetes.io/role/cniHal ini mencegah gangguan pada menjalankan Pod yang sudah menggunakan alamat IP dari ENI tersebut.
VPC CNI menggunakan desain ini dengan sengaja. Secara paksa mengecualikan ENI yang sudah terpasang dari subnet yang tidak diberi tag akan merusak Pod yang saat ini menggunakan alamat IP dari ENI tersebut.
penting
Untuk mencegah subnet melayani IP Pod baru — termasuk dari ENI yang ada — beri tag pada subnet tersebut. kubernetes.io/role/cni=0 Tag absen hanya mencegah pembuatan ENI baru di subnet itu. Itu tidak mengecualikan ENI yang ada dari alokasi.
Penanganan subnet primer
VPC CNI selalu menyertakan subnet utama node (subnet tempat node diluncurkan) untuk pembuatan ENI, bahkan tanpa tag. kubernetes.io/role/cni Ini mempertahankan kompatibilitas mundur dengan cluster yang ada. Perilaku subnet utama:
-
Termasuk untuk pembuatan ENI terlepas dari keberadaan tag (kecuali diberi tag
0). -
Jika ditandai dengan
kubernetes.io/role/cni=0, VPC CNI mengecualikan subnet utama dari pembuatan ENI baru dan alokasi ENI yang ada.
Cluster-scoped penyaringan subnet
Ketika subnet ditandai dengankubernetes.io/role/cni=1, VPC CNI juga memeriksa tag khusus cluster menggunakan format kunci. cni.networking.k8s.aws/cluster/<cluster-name> Jika subnet memiliki tag cluster dalam format ini, hanya cluster yang namanya cocok menggunakan subnet tersebut. Subnet dengan kubernetes.io/role/cni=1 dan tanpa tag khusus cluster tersedia untuk semua cluster di VPC.
Misalnya, untuk membatasi subnet ke cluster tertentu:
aws ec2 create-tags --resources subnet-example \ --tags Key=kubernetes.io/role/cni,Value=1 Key=cni.networking.k8s.aws/cluster/my-cluster,Value=shared
Ini berguna ketika beberapa cluster EKS berbagi VPC dan Anda ingin setiap cluster menggunakan subnet yang berbeda untuk alamat IP Pod.
Alur kerja yang direkomendasikan
Untuk menambahkan subnet baru untuk alamat IP Pod:
-
Buat subnet baru di VPC dan Availability Zone yang sama dengan node Anda.
-
Tandai subnet dengan
kubernetes.io/role/cni=1. -
Pastikan subnet memiliki tabel rute dan ACL jaringan yang sesuai.
-
Verifikasi bahwa VPC CNI menemukan dan mulai menggunakan subnet baru.
Untuk menghapus subnet dari alokasi IP Pod:
-
Tandai subnet dengan
kubernetes.io/role/cni=0. -
Tunggu Pod yang menggunakan IP dari subnet tersebut untuk menghentikan atau menjadwal ulang secara alami.
-
Verifikasi bahwa VPC CNI berhenti mengalokasikan IP Pod baru dari ENI di subnet tersebut.
penting
Jangan hapus kubernetes.io/role/cni tag untuk berhenti menggunakan subnet. Menghapus tag mencegah pembuatan ENI baru tetapi tidak mengecualikan ENI yang ada dari alokasi. Untuk secara aktif mengecualikan subnet, beri tag dengankubernetes.io/role/cni=0.
Pertimbangan-pertimbangan
-
Penemuan subnet yang disempurnakan membutuhkan Amazon VPC CNI versi 1.18.0 atau yang lebih baru.
-
Fitur ini memerlukan
ec2:DescribeSubnetsizin dalam peran VPC CNI IAM. KebijakanAmazonEKS_CNI_Policyterkelola mencakup izin ini. Kebijakan IAM yang dikelola sendiri IPv6 tidak menyertakannya. Jika Anda menggunakan kebijakan IAM yang dikelola sendiri (misalnya, untuk kluster IPv6), tambahkanec2:DescribeSubnetssecara manual untuk mengaktifkan penemuan subnet. -
Fitur ini bekerja dengan mode alamat IP sekunder dan mode delegasi awalan.
-
Semua subnet yang ditemukan harus berada dalam VPC yang sama dengan node.
-
VPC CNI hanya membuat ENI di subnet yang berada di Availability Zone yang sama dengan node.
-
VPC CNI tidak mengalokasikan ENI yang masih memiliki alamat IP yang ditetapkan ke Pod, terlepas dari perubahan tag.
-
Saat menggunakan VPC bersama (subnet lintas akun), beri tag subnet di akun peserta tempat cluster diluncurkan.
-
Anda dapat menggunakan penemuan subnet yang disempurnakan bersama dengan grup keamanan untuk Pod, kebijakan jaringan, delegasi awalan, dan SNAT.