Plugin Container Network Interface (CNI) Terway dan Flannel yang disediakan oleh ACK secara default memenuhi sebagian besar kebutuhan jaringan kontainer. Namun, untuk skenario yang memerlukan fitur tertentu dari plugin CNI lainnya, ACK memungkinkan Anda menginstal plugin CNI kustom di dalam kluster menggunakan mode Bring Your Own Container Network Interface (BYOCNI). Topik ini menjelaskan cara membuat ACK managed cluster Pro tanpa plugin CNI dan cara menginstal plugin CNI kustom secara manual.
Pernyataan Penyangkalan
Container Network Interface (CNI) tidak hanya memengaruhi lalu lintas timur-barat dan utara-selatan di dalam kluster, tetapi juga kemampuan beberapa komponen inti. Misalnya, webhook bergantung pada API Server untuk mengakses Pod secara langsung.
Alibaba Cloud tidak menyediakan Service-Level Agreement (SLA) untuk kegagalan yang disebabkan oleh plugin CNI kustom di ACK managed cluster Pro. Anda bertanggung jawab atas pengelolaan kemampuan jaringan, pemecahan masalah, serta penyelesaian kegagalan terkait plugin CNI kustom tersebut. ACK tidak memberikan dukungan teknis untuk plugin CNI kustom.
Jika Anda memerlukan dukungan terkait CNI, gunakan plugin CNI yang disediakan oleh ACK atau gunakan plugin CNI komersial untuk mendapatkan dukungan teknis profesional dari pihak ketiga.
Perhatian
Jika plugin CNI kustom Anda menggunakan jaringan Overlay, API Server dari ACK managed cluster Pro tidak dapat mengakses webhook apa pun. Hal ini memengaruhi semua komponen yang menggunakan webhook, seperti metrics-server.
Langkah 1: Membuat kluster BYOCNI
Anda hanya dapat membuat ACK managed cluster Pro tanpa plugin CNI (kluster BYOCNI) dengan memanggil operasi API CreateCluster atau dengan menggunakan Terraform untuk membuat ACK managed cluster. Anda harus menonaktifkan komponen
kube-flannel-dssaat membuat kluster.Gunakan OpenAPI
Gunakan Terraform
"addons": [ { "name": "kube-flannel-ds", "disabled": true } ]addons { name = "kube-flannel-ds" disabled = true }(Opsional) Jika Anda menggunakan mode rute VPC, Anda harus mengonfigurasi komponen
cloud-controller-manager. Untuk informasi selengkapnya, lihat konfigurasi cloud-controller-manager.Gunakan OpenAPI
Gunakan Terraform
"addons": [ { "name": "cloud-controller-manager", "config": "{\"EnableCloudRoutes\":\"true\",\"BackendType\":\"NodePort\"}" } ]addons { name = "cloud-controller-manager" config = jsonencode({ EnableCloudRoutes = "true" BackendType = "NodePort" }) }Setelah kluster dibuat, semua node memiliki status
NotReadykarena belum ada plugin CNI yang diinstal. Ini merupakan perilaku yang diharapkan. Status node akan berubah secara otomatis menjadiReadysetelah Anda menginstal plugin CNI.
Langkah 2: Menginstal plugin CNI kustom
Langkah-langkah berikut menjelaskan cara menginstal Cilium dalam mode rute VPC dan hanya sebagai referensi. Operasi dapat berbeda tergantung pada plugin CNI yang Anda gunakan.
Sebelum melakukan operasi dalam contoh ini, pastikan Anda telah terhubung ke kluster menggunakan kubectl dan telah menginstal Antarmuka Baris Perintah (CLI) Helm. Untuk informasi selengkapnya, lihat Mendapatkan file kubeconfig kluster dan menggunakan kubectl untuk terhubung ke kluster dan Menginstal Helm.
Citra Cilium dalam contoh ini disimpan di repositori di luar Tiongkok. Pengambilan citra mungkin gagal. Anda dapat menggunakan salah satu solusi berikut:
Solusi 1: Berlangganan citra dari repositori di luar Tiongkok menggunakan Container Registry (ACR). Untuk informasi selengkapnya, lihat Berlangganan citra dari repositori di luar Tiongkok.
Solusi 2: Buat instans Global Accelerator (GA) dan gunakan layanan akselerasi jaringan global GA untuk langsung menarik gambar kontainer dari repositori di luar Tiongkok. Untuk informasi selengkapnya, lihat Menggunakan GA untuk mempercepat penarikan gambar kontainer lintas wilayah di kluster ACK.
Jalankan perintah berikut untuk menambahkan repositori Helm Cilium.
helm repo add cilium https://helm.cilium.io/Jalankan perintah berikut untuk menginstal Cilium. Sesuaikan parameter dalam perintah berdasarkan perencanaan jaringan kluster Anda.
helm install --set securityContext.privileged=true \ --set routingMode=native \ --set ipam.mode=kubernetes \ --set ipMasqAgent.enable=true \ --set ipMasqAgent.config.nonMasqueradeCIDRs='{172.16.0.0/12,10.0.0.0/8 }' \ --set ipv4NativeRoutingCIDR=172.16.0.0/12 \ cilium cilium/cilium --version 1.17.4 \ --namespace kube-systemPenjelasan parameter:
ipv4NativeRoutingCIDR:
172.16.0.0/12adalah blok CIDR Pod yang digunakan oleh kluster.ipMasqAgent.config.nonMasqueradeCIDRs:
172.16.0.0/12adalah blok CIDR Pod yang digunakan oleh kluster, dan10.0.0.0/8adalah blok CIDR VPC yang digunakan oleh kluster.
Keluaran yang diharapkan:
NAME: cilium LAST DEPLOYED: Fri Jul 18 16:34:50 2025 NAMESPACE: kube-system STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: You have successfully installed Cilium with Hubble. Your release version is 1.17.4. For any further help, visit https://docs.cilium.io/en/v1.17/gettinghelpSetelah plugin CNI Cilium diinstal, status node berubah menjadi
Ready.
Konfigurasi tambahan
Saat membuat kluster BYOCNI, Anda dapat menentukan parameter tambahan untuk menyesuaikan perilaku kluster dan lebih memenuhi kebutuhan plugin CNI Anda.
Menetapkan blok PodCIDR ke sebuah node
Beberapa plugin CNI bergantung pada properti PodCIDR sebuah node untuk mengalokasikan alamat IP ke Pod. Anda dapat menentukan container_cidr dan node_cidr_mask saat membuat kluster untuk mengatur blok CIDR Pod kluster dan masker subnet untuk setiap node.
Jika Anda mengonfigurasi container_cidr dan node_cidr_mask, blok PodCIDR akan ditetapkan ke setiap node di kluster. Jika tidak, tidak ada blok PodCIDR yang ditetapkan ke node. Untuk informasi selengkapnya tentang cara mengonfigurasi parameter ini, lihat CreateCluster.
Konfigurasi cloud-controller-manager
cloud-controller-manager ACK menyediakan fitur opsional untuk kluster BYOCNI. Anda dapat mengaktifkan atau menonaktifkan fitur-fitur ini dengan mengonfigurasi parameter add-on cloud-controller-manager saat membuat kluster.
Parameter | Nilai default | Wajib | Deskripsi |
EnableCloudRoutes |
| Tidak | Setelah Anda mengaktifkan PodCIDR pada node, jika Anda menggunakan tabel rute VPC untuk mengaktifkan komunikasi antar Pod, Anda dapat mengaktifkan fitur |
BackendType |
| Tidak | cloud-controller-manager bertanggung jawab untuk memproses Layanan tipe LoadBalancer, termasuk membuat instans CLB/NLB dan menambahkan Pod ke grup server backend instans CLB/NLB. Secara default, cloud-controller-manager menambahkan alamat IP node di kluster ke grup server backend layanan load balancing. Layanan load balancing meneruskan trafik ke node, lalu trafik diteruskan ke Pod berdasarkan konfigurasi penerusan Layanan pada node. Jika plugin BYOCNI Anda mengalokasikan alamat IP VPC ke Pod, Anda dapat langsung menambahkan alamat IP Pod ke grup server backend layanan load balancing tanpa perlu penerusan melalui node. Nilai yang valid:
|
Contoh konfigurasi:
Gunakan OpenAPI | Gunakan Terraform |
| |