Dengan adopsi luas Kubernetes, perusahaan memerlukan pengelolaan beberapa kluster Kubernetes untuk memenuhi kebutuhan isolasi layanan, penyebaran aplikasi, serta operasi dan pemeliharaan. Selain itu, sebuah kluster mungkin perlu mengakses layanan yang diterapkan di kluster lain. Fitur layanan multi-cluster (MCS) memungkinkan Anda mengakses layanan lintas kluster Kubernetes tanpa perlu membuat load balancer. Topik ini menjelaskan arsitektur, skenario, dan desain jaringan fitur MCS.
Arsitektur
Fitur layanan multi-cluster (MCS) memungkinkan Anda mengakses Layanan lintas kluster. Anda dapat membuat aplikasi yang mencakup beberapa kluster. Gambar berikut menunjukkan arsitektur fitur MCS.
Koneksi yang ditandai dengan 1 pada gambar di atas digunakan oleh Distributed Cloud Container Platform for Kubernetes (ACK One) Fleet instance untuk mengelola ServiceExport dan ServiceImport di kluster Container Service for Kubernetes (ACK) terkait.
ServiceExport dibuat di ACK Cluster 1 untuk mengekspor Service 1. ACK Cluster 1 bertindak sebagai penyedia layanan.
ServiceImport dibuat di ACK Cluster 2 untuk memungkinkan ACK Cluster 2 mengakses Service 1 yang diekspor oleh penyedia layanan. ACK Cluster 2 bertindak sebagai konsumen layanan.
Koneksi yang ditandai dengan 2 pada gambar di atas digunakan untuk pertukaran data. Setelah Service 1 diekspor di ACK Cluster 1 dan diimpor di ACK Cluster 2, Anda dapat mengakses Service 1 di ACK Cluster 1 dari ACK Cluster 2. Dengan cara ini, Anda dapat mengakses layanan lintas kluster.
Cara kerja MCS
Gambar berikut menunjukkan cara kerja MCS.
Untuk memungkinkan pod di ACK Cluster 2 mengakses Service 1 di ACK Cluster 1, buat ServiceExport di ACK Cluster 1 dan ServiceImport di ACK Cluster 2.
ACK One Fleet instance membuat Layanan bernama
amc-Service1yang diawali denganamc-di ACK Cluster 2 dan menyinkronkan alamat IP pod di ACK Cluster 1 ke backend Layananamc-Service1.Pod klien di ACK Cluster 2 dapat mengakses Service 1 di ACK Cluster 1 melalui salah satu cara berikut:
Mengakses nama domain yang dimulai dengan
amc-, sepertiamc-Service1.provider-ns.Mengakses nama domain yang diakhiri dengan clusterset.local, seperti
Service1.provider-ns.svc.clusterset.local.
Skenario
Access a Service from a different cluster
Buat ServiceExport di ACK Cluster 1 dan ServiceImport di ACK Cluster 2. ACK Cluster 1 bertindak sebagai penyedia layanan, sedangkan ACK Cluster 2 bertindak sebagai konsumen layanan. Pod klien di ACK Cluster 2 dapat mengakses Service 1 yang diekspor di ACK Cluster 1. Service 1 diakses berdasarkan resolusi nama domain. Trafik diseimbangkan di antara pod backend di ACK Cluster 1, dan jumlah pod diskalakan secara dinamis. Gambar berikut menunjukkan bagaimana Layanan diakses lintas kluster.
Access a Service that is deployed across clusters
Service 1 diterapkan lintas beberapa kluster untuk memastikan ketersediaan tinggi. Saat pod klien mengakses Service 1 lintas kluster, trafik dapat diseimbangkan di antara beberapa pod kluster tersebut. Gambar berikut menunjukkan bagaimana Service 1 yang diterapkan lintas kluster diakses.
Desain jaringan untuk MCS
Untuk mengakses layanan lintas kluster, pastikan jaringan pod di kluster terhubung sehingga pod dapat saling mengakses. Persyaratan berikut harus dipenuhi:
Jika beberapa virtual private cloud (VPC) digunakan, pastikan blok CIDR VPC tidak tumpang tindih satu sama lain. VPC tersebut dihubungkan menggunakan Cloud Enterprise Network (CEN).
Blok CIDR pod di kluster tidak boleh tumpang tindih satu sama lain, dan grup keamanan pool node harus saling mengizinkan trafik antar blok CIDR pod.
Blok CIDR pod tidak boleh tumpang tindih dengan blok CIDR Layanan di kluster.
Untuk informasi lebih lanjut, lihat Perencanaan jaringan kluster ACK yang dikelola.
Batasan
Versi Kubernetes dari kluster terkait harus 1.22 atau lebih baru.