Layanan multi-kluster (MCS) memungkinkan Pod di satu kluster Kubernetes mengakses Service yang berjalan di kluster lain tanpa menggunakan load balancer. Gunakan MCS saat Anda perlu:
-
Mengisolasi beban kerja di berbagai kluster sekaligus tetap berbagi Service internal
-
Men-deploy Service di beberapa kluster untuk ketersediaan tinggi dan load balancing lintas kluster
-
Menghubungkan kluster di VPC terpisah tanpa mengekspos Service melalui titik akhir publik
Konsep utama
| Term | Description | Created by |
|---|---|---|
| ServiceExport | Resource kustom yang Anda buat di kluster penyedia untuk mengekspor Service ke kluster lain. | User |
| ServiceImport | Resource kustom yang merepresentasikan Service multi-kluster di kluster konsumen. | User |
| Clusterset | Kelompok kluster yang berbagi Service melalui MCS. Setiap kluster dapat bertindak sebagai penyedia layanan, konsumen layanan, atau keduanya. | — |
| Service provider | Kluster yang mengekspor Service melalui ServiceExport. | — |
| Service consumer | Kluster yang mengimpor dan mengakses Service yang diekspor melalui ServiceImport. | — |
Arsitektur
Fitur MCS mengandalkan instans ACK One Fleet untuk mengoordinasikan objek ServiceExport dan ServiceImport di seluruh kluster Container Service for Kubernetes (ACK) yang terkait.
Dua koneksi ditampilkan dalam diagram:
-
Connection 1 — Instans ACK One Fleet mengelola ServiceExport dan ServiceImport di kluster ACK terkait. Anda membuat ServiceExport di kluster penyedia (ACK Cluster 1) dan ServiceImport di kluster konsumen (ACK Cluster 2).
-
Connection 2 — Data mengalir langsung antar kluster. Setelah Service 1 diekspor dari ACK Cluster 1 dan diimpor ke ACK Cluster 2, Pod di ACK Cluster 2 dapat mengakses Service 1.
Cara kerja
Diagram berikut menunjukkan alur traffic lintas kluster.
-
Buat ServiceExport di ACK Cluster 1 (penyedia) dan ServiceImport di ACK Cluster 2 (konsumen).
-
ACK One Fleet membuat Service bernama
amc-<service-name>di ACK Cluster 2 dan menyinkronkan alamat IP Pod dari ACK Cluster 1 ke backend-nya. -
Pod di ACK Cluster 2 dapat mengakses Service 1 menggunakan salah satu format nama domain berikut:
Format Contoh amc-<service-name>.<provider-namespace>amc-Service1.provider-ns<service-name>.<provider-namespace>.svc.clusterset.localService1.provider-ns.svc.clusterset.local
Kasus penggunaan
Akses Service dari kluster berbeda
Deploy Service Anda di ACK Cluster 1 dan buat ServiceExport. Buat ServiceImport di ACK Cluster 2. Pod di ACK Cluster 2 kemudian dapat mengakses Service tersebut melalui DNS. Traffic dilakukan load balancing di seluruh Pod backend di ACK Cluster 1, dan jumlah Pod diskalakan secara dinamis.
Akses Service yang dideploy di beberapa kluster
Deploy Service yang sama di beberapa kluster untuk ketersediaan tinggi. Saat sebuah Pod mengakses Service tersebut, traffic diseimbangkan di seluruh Pod di semua kluster yang berpartisipasi.
Persyaratan jaringan
Traffic pod-ke-pod harus mengalir langsung antar kluster agar MCS berfungsi. Sebelum mengaktifkan MCS, pastikan ketiga persyaratan jaringan berikut terpenuhi:
| Requirement | Why it matters |
|---|---|
| Jika menggunakan multiple virtual private cloud (VPC), blok CIDR VPC tidak boleh tumpang tindih, dan semua VPC harus terhubung melalui Cloud Enterprise Network (CEN). | Blok CIDR yang tumpang tindih menyebabkan konflik routing; CEN menyediakan jalur jaringan lintas VPC. |
| Blok CIDR Pod tidak boleh tumpang tindih antar kluster. Security group node pool harus saling mengizinkan traffic antar blok CIDR Pod. | Routing langsung pod-ke-pod memerlukan alamat unik dan aturan security group yang terbuka. |
| Blok CIDR Pod tidak boleh tumpang tindih dengan blok CIDR Service di kluster mana pun. | Tumpang tindih antara blok CIDR Pod dan Service mengganggu penemuan Service berbasis DNS lintas kluster. |
Untuk perencanaan jaringan tingkat kluster, lihat Plan the network of an ACK cluster.
Batasan
Versi Kubernetes semua kluster terkait harus 1.22 atau lebih baru.