Halaman ini menunjukkan cara mengaktifkan dan menggunakan Service multi-cluster (MCS). Untuk mempelajari lebih lanjut cara kerja MCS dan manfaatnya, lihat Service Multi-cluster.
Fitur MCS Google Kubernetes Engine (GKE) memperluas jangkauan Service Kubernetes melebihi batas cluster dan memungkinkan Anda menemukan serta memanggil Service di beberapa cluster GKE. Anda dapat mengekspor subset Service yang ada atau Service baru.
Saat Anda mengekspor Service dengan MCS, Service tersebut akan tersedia di semua cluster di fleet Anda.
Resource Google Cloud yang dikelola oleh MCS
MCS mengelola komponen Google Cloud berikut:
Cloud DNS: MCS mengonfigurasi zona dan data Cloud DNS untuk setiap Service yang diekspor di cluster fleet Anda. Hal ini memungkinkan Anda terhubung ke Service yang berjalan di cluster lain. Zona dan data ini dibuat, dibaca, diperbarui, dan dihapus berdasarkan Service yang Anda pilih untuk diekspor di seluruh cluster.
Aturan firewall: MCS mengonfigurasi aturan firewall yang memungkinkan Pod berkomunikasi satu sama lain di seluruh cluster dalam fleet Anda. Aturan firewall dibuat, dibaca, diperbarui, dan dihapus berdasarkan cluster yang Anda tambahkan ke fleet. Aturan ini mirip dengan aturan yang dibuat GKE untuk mengaktifkan komunikasi antar-Pod dalam cluster GKE.
Cloud Service Mesh: MCS menggunakan Cloud Service Mesh sebagai bidang kontrol untuk melacak endpoint dan kondisinya di seluruh cluster.
Persyaratan
MCS memiliki persyaratan berikut:
MCS hanya mendukung ekspor service dari cluster GKE VPC native di Google Cloud. Untuk informasi selengkapnya, lihat Membuat cluster VPC native. Anda tidak dapat menggunakan cluster GKE Standard non-VPC native.
Konektivitas antar-cluster bergantung pada cluster yang berjalan dalam jaringan VPC yang sama, dalam jaringan VPC peering atau bersama. Jika tidak, panggilan ke layanan eksternal tidak akan dapat melintasi batas jaringan.
Meskipun fleet mungkin mencakup beberapa project Google Cloud dan jaringan VPC, satu service multi-cluster harus diekspor dari satu project dan satu jaringan VPC.
MCS tidak didukung dengan kebijakan jaringan.
Cluster harus mengaktifkan add-on
HttpLoadBalancing
. Pastikan add-onHttpLoadBalancing
diaktifkan. Add-onHttpLoadBalancing
diaktifkan secara default dan tidak boleh dinonaktifkan.
Harga
Service Multi-cluster disertakan sebagai bagian dari biaya pengelolaan cluster GKE dan tidak ada biaya tambahan untuk penggunaan. Anda harus mengaktifkan Traffic Director API, tetapi MCS tidak mengenakan biaya endpoint Cloud Service Mesh apa pun. Pemberian lisensi GKE Enterprise tidak diperlukan untuk menggunakan MCS.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
Menginstal Google Cloud SDK.
Mengaktifkan Google Kubernetes Engine API:
Aktifkan MCS, fleet (hub), Resource Manager, Cloud Service Mesh, dan Cloud DNS API:
gcloud services enable \ multiclusterservicediscovery.googleapis.com \ gkehub.googleapis.com \ cloudresourcemanager.googleapis.com \ trafficdirector.googleapis.com \ dns.googleapis.com \ --project=PROJECT_ID
Ganti
PROJECT_ID
dengan project ID dari project tempat Anda berencana untuk mendaftarkan cluster ke fleet.
Mengaktifkan MCS di project Anda
MCS mewajibkan cluster GKE yang berpartisipasi untuk terdaftar ke fleet yang sama. Setelah fitur MCS diaktifkan untuk suatu fleet, setiap cluster dapat mengekspor Service antar-cluster dalam fleet.
Meskipun MCS memerlukan pendaftaran ke fleet, Anda tidak harus mengaktifkan platform GKE Enterprise.
GKE Enterprise
Jika GKE Enterprise API diaktifkan di project host fleet Anda sebagai prasyarat untuk menggunakan komponen GKE Enterprise lainnya, semua cluster yang terdaftar ke fleet project akan dikenai biaya sesuai dengan harga GKE Enterprise. Model harga ini memungkinkan Anda menggunakan semua fitur GKE Enterprise di cluster terdaftar untuk satu biaya per vCPU. Anda dapat memastikan apakah GKE Enterprise API sudah diaktifkan menggunakan perintah berikut:
gcloud services list --project=PROJECT_ID | grep anthos.googleapis.com
Jika outputnya mirip seperti berikut ini, platform GKE Enterprise sepenuhnya diaktifkan dan setiap cluster yang terdaftar ke fleet akan dikenai biaya GKE Enterprise:
anthos.googleapis.com Anthos API
Jika hal ini tidak diharapkan, hubungi administrator project Anda.
Output kosong menunjukkan bahwa GKE Enterprise tidak diaktifkan.
Mengaktifkan MCS di cluster GKE
Aktifkan fitur MCS untuk fleet project Anda:
gcloud container fleet multi-cluster-services enable \ --project PROJECT_ID
Ganti
PROJECT_ID
dengan project ID dari project tempat Anda berencana untuk mendaftarkan cluster ke fleet. Ini adalah project host fleet Anda.Daftarkan cluster GKE Anda ke fleet. Sebaiknya daftarkan cluster dengan Workload Identity Federation untuk GKE yang aktif. Jika Workload Identity Federation tidak diaktifkan untuk GKE, Anda perlu mendaftarkan cluster ke akun layanan Google Cloud untuk autentikasi, dan menyelesaikan langkah-langkah tambahan di bagian Mengautentikasi akun layanan.
Untuk mendaftarkan cluster Anda dengan Workload Identity Federation untuk GKE, jalankan perintah berikut:
gcloud container fleet memberships register MEMBERSHIP_NAME \ --gke-cluster CLUSTER_LOCATION/CLUSTER_NAME \ --enable-workload-identity \ --project PROJECT_ID
Ganti kode berikut:
MEMBERSHIP_NAME
: nama keanggotaan yang Anda pilih untuk merepresentasikan cluster secara unik dalam fleet. Biasanya, nama keanggotaan fleet cluster adalah nama cluster, tetapi Anda mungkin perlu menentukan nama baru jika cluster lain dengan nama aslinya sudah ada dalam fleet.CLUSTER_LOCATION
: zona atau region tempat cluster berada.CLUSTER_NAME
: nama cluster.
Berikan izin Identity and Access Management (IAM) yang diperlukan untuk Pengimpor MCS:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:PROJECT_ID.svc.id.goog[gke-mcs/gke-mcs-importer]" \ --role "roles/compute.networkViewer"
Ganti
PROJECT_ID
dengan project ID dari project host fleet.Pastikan setiap cluster di fleet memiliki namespace untuk berbagi Service. Jika diperlukan, buat namespace dengan menggunakan perintah berikut:
kubectl create ns NAMESPACE
Ganti
NAMESPACE
dengan nama untuk namespace.Untuk memastikan MCS sudah diaktifkan, jalankan perintah berikut:
gcloud container fleet multi-cluster-services describe \ --project PROJECT_ID
Outputnya mirip dengan yang berikut ini:
createTime: '2021-08-10T13:05:23.512044937Z' membershipStates: projects/PROJECT_ID/locations/global/memberships/MCS_NAME: state: code: OK description: Firewall successfully updated updateTime: '2021-08-10T13:14:45.173444870Z' name: projects/PROJECT_NAME/locations/global/features/multiclusterservicediscovery resourceState: state: ACTIVE spec: {}
Jika nilai
state
bukanACTIVE
, lihat bagian pemecahan masalah.
Mengautentikasi akun layanan
Jika mendaftarkan cluster GKE ke fleet menggunakan akun
layanan, Anda perlu melakukan langkah tambahan untuk mengautentikasi akun layanan.
MCS men-deploy komponen yang disebut gke-mcs-importer
. Komponen ini menerima
update endpoint dari Cloud Service Mesh, sehingga sebagai bagian dari pengaktifan MCS, Anda harus memberikan
izin akun layanan untuk membaca informasi
dari Cloud Service Mesh.
Saat menggunakan akun layanan, Anda dapat menggunakan akun layanan default Compute Engine atau akun layanan node Anda sendiri:
Jika Anda menggunakan akun layanan default Compute Engine, aktifkan cakupan berikut:
https://www.googleapis.com/auth/compute.readonly
https://www.googleapis.com/auth/cloud-platform
Untuk mempelajari lebih lanjut cara mengaktifkan cakupan, lihat Mengubah cakupan akun layanan dan akses untuk instance.
Jika Anda menggunakan akun layanan node sendiri, tetapkan peran
roles/compute.networkViewer
ke akun layanan Anda.
Menggunakan MCS
Bagian berikut menunjukkan cara menggunakan MCS. MCS menggunakan API service multi-cluster Kubernetes.
Mendaftarkan Service untuk diekspor
Guna mendaftarkan Service untuk diekspor ke cluster lain dalam fleet Anda, selesaikan langkah-langkah berikut:
Buat objek
ServiceExport
bernamaexport.yaml
:# export.yaml kind: ServiceExport apiVersion: net.gke.io/v1 metadata: namespace: NAMESPACE name: SERVICE_EXPORT_NAME
Ganti kode berikut:
NAMESPACE
: namespace objekServiceExport
. Namespace ini harus cocok dengan namespace Service yang Anda ekspor.SERVICE_EXPORT_NAME
: nama Service di cluster yang ingin diekspor ke cluster lain dalam fleet Anda.
Buat resource
ServiceExport
dengan menjalankan perintah berikut:kubectl apply -f export.yaml
Ekspor awal Service Anda memerlukan waktu sekitar lima menit untuk disinkronkan ke cluster yang terdaftar di fleet Anda. Setelah Service diekspor, sinkronisasi endpoint berikutnya akan segera dilakukan.
Anda dapat mengekspor Service yang sama dari beberapa cluster untuk membuat satu endpoint service multi-cluster yang sangat
tersedia dengan distribusi traffic di seluruh
cluster. Sebelum mengekspor Service dengan nama dan namespace yang sama,
pastikan Anda ingin mengelompokkannya dengan cara ini. Sebaiknya Anda tidak
mengekspor service di namespace default
dan kube-system
karena
tingginya kemungkinan terjadinya konflik nama yang tidak diinginkan dan pengelompokan
yang tidak diinginkan. Jika Anda mengekspor lebih dari lima service dengan nama dan namespace
yang sama, distribusi traffic pada service yang diimpor mungkin dibatasi hingga lima service yang diekspor.
Menggunakan Service lintas-cluster
MCS hanya mendukung Service ClusterSetIP dan headless. Hanya data "A" DNS yang tersedia.
Setelah Anda membuat objek ServiceExport
, nama domain berikut akan me-resolve ke
Service yang diekspor dari Pod mana pun di cluster fleet apa pun:
SERVICE_EXPORT_NAME.NAMESPACE.svc.clusterset.local
Outputnya mencakup nilai berikut:
SERVICE_EXPORT_NAME
danNAMESPACE
: nilai yang Anda tentukan dalam objekServiceExport
.
Untuk Service ClusterSetIP, domain akan me-resolve ke ClusterSetIP
. Anda
dapat menemukan nilai ini dengan mencari objek ServiceImport
dalam cluster di
namespace tempat objek ServiceExport
dibuat. Objek ServiceImport
dibuat secara otomatis.
Contoh:
kind: ServiceImport
apiVersion: net.gke.io/v1
metadata:
namespace: EXPORTED-SERVICE-NAMESPACE
name: external-svc-SERVICE-EXPORT-TARGET
status:
ports:
- name: https
port: 443
protocol: TCP
targetPort: 443
ips: CLUSTER_SET_IP
MCS membuat objek Endpoints
sebagai bagian dari pengimporan Service
ke dalam
cluster. Dengan menyelidiki objek ini, Anda dapat memantau progres impor
Service. Untuk menemukan nama objek Endpoints
, cari nilai
net.gke.io/derived-service
anotasi pada objek ServiceImport
yang sesuai dengan Service yang diimpor. Contoh:
kind: ServiceImport
apiVersion: net.gke.io/v1
annotations: net.gke.io/derived-service: DERIVED_SERVICE_NAME
metadata:
namespace: EXPORTED-SERVICE-NAMESPACE
name: external-svc-SERVICE-EXPORT-TARGET
Selanjutnya, cari objek Endpoints
untuk memeriksa apakah MCS telah menerapkan
endpoint ke cluster impor. Objek Endpoints
dibuat dalam
namespace yang sama dengan objek ServiceImport
, dengan nama yang tersimpan dalam
anotasi net.gke.io/derived-service
. Contoh:
kubectl get endpoints DERIVED_SERVICE_NAME -n NAMESPACE
Ganti kode berikut:
DERIVED_SERVICE_NAME
: nilai anotasinet.gke.io/derived-service
pada objekServiceImport
.NAMESPACE
: namespace objekServiceExport
.
Anda dapat mengetahui status kesiapan endpoint lebih lanjut menggunakan dasbor Cloud Service Mesh di konsol Google Cloud.
Untuk Service headless, domain me-resolve ke daftar alamat IP endpoint dalam cluster ekspor. Setiap Pod backend dengan nama host juga dapat ditangani secara independen dengan nama domain berformat seperti berikut:
HOSTNAME.MEMBERSHIP_NAME.LOCATION.SERVICE_EXPORT_NAME.NAMESPACE.svc.clusterset.local
Outputnya mencakup nilai berikut:
SERVICE_EXPORT_NAME
danNAMESPACE
: nilai yang Anda tentukan dalam objekServiceExport
.MEMBERSHIP_NAME
: ID unik dalam fleet untuk cluster tempat Pod.LOCATION
: lokasi keanggotaan. Keanggotaan dapat berupaglobal
, atau lokasinya adalah salah satu region atau zona tempat Pod berada, sepertius-central1
.HOSTNAME
: nama host Pod.
Anda juga dapat menangani Pod backend dengan nama host yang diekspor dari cluster yang terdaftar dengan Keanggotaan global, menggunakan nama domain berformat seperti berikut:
HOSTNAME.MEMBERSHIP_NAME.SERVICE_EXPORT_NAME.NAMESPACE.svc.clusterset.local
Menonaktifkan MCS
Untuk menonaktifkan MCS, selesaikan langkah-langkah berikut:
Untuk setiap cluster dalam fleet, hapus setiap objek ServiceExport yang Anda buat:
kubectl delete serviceexport SERVICE_EXPORT_NAME \ -n NAMESPACE
Ganti kode berikut:
SERVICE_EXPORT_NAME
: nama objek ServiceExport Anda.NAMESPACE
: namespace objekServiceExport
.
Pastikan
ServiceExport
menghilang dari daftar dalam 30 menit.Batalkan pendaftaran cluster dari fleet jika tidak perlu didaftarkan untuk tujuan lain.
Nonaktifkan fitur
multiclusterservicediscovery
:gcloud container fleet multi-cluster-services disable \ --project PROJECT_ID
Ganti
PROJECT_ID
dengan project ID dari project tempat Anda mendaftarkan cluster.Nonaktifkan API untuk MCS:
gcloud services disable multiclusterservicediscovery.googleapis.com \ --project PROJECT_ID
Ganti
PROJECT_ID
dengan project ID dari project tempat Anda mendaftarkan cluster.
Batasan
Jumlah cluster, Pod, dan port Layanan
Batas berikut tidak diterapkan, dan dalam beberapa kasus, Anda dapat melewati batas ini, bergantung pada beban dalam cluster atau project Anda, dan kecepatan churn endpoint. Anda mungkin mengalami masalah performa saat batas ini terlampaui.
Di Kubernetes, Layanan diidentifikasi secara unik berdasarkan namanya dan namespace tempatnya berada. Nama ini dan pasangan namespace disebut nama dengan namespace.
Mengekspor cluster: Satu Service, yang diidentifikasi berdasarkan nama dengan namespace, dapat diekspor secara aman dari maksimal 5 cluster secara bersamaan. Di luar batas tersebut, ada kemungkinan hanya subset endpoint yang dapat diimpor ke cluster pengguna. Anda dapat mengekspor berbagai Service dari subset cluster yang berbeda.
Jumlah Pod di balik satu Service: Batas amannya adalah 250 Pod di bawah satu Service. Ini adalah batasan yang sama dengan yang dimiliki Service cluster tunggal. Dengan workload yang relatif statis dan sejumlah kecil Service multi-cluster, jumlah ini mungkin dapat terlampaui secara signifikan menjadi ribuan endpoint per Service. Seperti halnya Service cluster tunggal, semua endpoint dipantau oleh
kube-proxy
di setiap node. Jika melampaui batas ini, terutama saat mengekspor dari beberapa cluster secara bersamaan, node yang lebih besar mungkin diperlukan.Jumlah Service multi-cluster yang diekspor secara bersamaan: Sebaiknya ekspor tidak lebih dari 250 port Service unik secara bersamaan.
Port Service unik diidentifikasi oleh nama dengan namespace dan nomor port, yaitu tuple (nama, namespace, nomor port). Ini berarti:
Service dengan nama dan port namespace yang sama, yang diekspor dari beberapa cluster dihitung sebagai satu port Service unik.
Dua Layanan dengan nama dan port yang sama, tetapi namespace yang berbeda, misalnya, (name, ns1, port-80) dan (name, ns2, port-80) adalah dua port Layanan yang berbeda, yang dihitung terhadap dua dari 250 batas port Layanan unik.
Service yang diekspor yang mengekspos dua port 80 dan 443 dihitung terhadap dua dari 250 batas port Service unik, terlepas dari jumlah cluster dalam fleet yang secara bersamaan mengekspor Service ini.
Setiap Layanan multi-cluster diperhitungkan dalam kuota Layanan Backend Anda, dan setiap zona dari setiap cluster pengekspor akan membuat grup endpoint jaringan (NEG). Meningkatkan kuota ini tidak akan mengubah batas yang dinyatakan untuk jumlah total port Layanan unik.
Jenis Service
MCS hanya mendukung Service ClusterSetIP dan Headless. Layanan NodePort dan LoadBalancer tidak didukung dan dapat menyebabkan perilaku yang tidak terduga.
Menggunakan Agen IPmasq dengan MCS
MCS beroperasi seperti yang diharapkan saat Anda menggunakan rentang IP Pod default atau lainnya yang tidak disamarkan.
Jika Anda menggunakan rentang IP Pod kustom atau ConfigMap agen IPmasq kustom, traffic MCS dapat disamarkan. Hal ini membuat MCS tidak berfungsi karena aturan firewall hanya mengizinkan traffic dari IP Pod.
Untuk menghindari masalah ini, Anda harus menggunakan rentang IP Pod default atau menentukan
semua rentang IP Pod di kolom nonMasqueradeCIDRs
pada
ConfigMap agen IPmasq.
Jika menggunakan Autopilot atau harus menggunakan rentang IP Pod non-default dan
tidak dapat menentukan semua rentang IP Pod di ConfigMap, Anda harus
menggunakan Kebijakan NAT Keluar untuk mengonfigurasi penyamaran IP.
Menggunakan kembali nomor port dalam Layanan MCS
Anda tidak dapat menggunakan kembali nomor port yang sama dalam satu Layanan MCS meskipun protokolnya berbeda.
Hal ini berlaku dalam satu Layanan Kubernetes dan di semua Layanan Kubernetes untuk satu Layanan MCS.
MCS dengan cluster dalam beberapa project
Anda tidak dapat mengekspor service jika service tersebut sudah diekspor oleh cluster lain dalam project yang berbeda dalam fleet dengan nama dan namespace yang sama. Anda dapat mengakses service di cluster lain dalam fleet di project lain, tetapi cluster tersebut tidak dapat mengekspor service yang sama dalam namespace yang sama.
Pemecahan masalah
Bagian berikut memberikan tips pemecahan masalah untuk MCS.
Melihat featureState
Melihat status fitur dapat membantu Anda mengonfirmasi apakah MCS berhasil dikonfigurasi. Anda dapat melihat status fitur MCS menggunakan perintah berikut:
gcloud container fleet multi-cluster-services describe
Outputnya mirip dengan yang berikut ini:
createTime: '2021-08-10T13:05:23.512044937Z'
membershipStates:
projects/PROJECT_ID/locations/global/memberships/MCS_NAME:
state:
code: OK
description: Firewall successfully updated
updateTime: '2021-08-10T13:14:45.173444870Z'
name: projects/PROJECT_NAME/locations/global/features/multiclusterservicediscovery
resourceState:
state: ACTIVE
spec: {}
Kolom yang paling berguna untuk pemecahan masalah adalah code
dan description
.
Kode di featureState
Kode menunjukkan status umum anggota sehubungan dengan MCS. Anda dapat menemukan
kolom ini di kolom state.code
. Ada tiga kemungkinan
kode:
OK
: Keanggotaan berhasil ditambahkan ke MCS dan siap digunakan.WARNING
: MCS sedang dalam proses merekonsiliasi penyiapan keanggotaan. Kolom deskripsi dapat memberikan informasi selengkapnya tentang penyebab kode ini.FAILED
: Keanggotaan ini tidak ditambahkan ke MCS. Keanggotaan lain di fleet dengan kodeOK
tidak terpengaruh oleh keanggotaanFAILED
ini. Kolom deskripsi dapat memberikan informasi selengkapnya tentang penyebab kode ini.ERROR
: Keanggotaan ini tidak memiliki aset. Keanggotaan lain di fleet dengan kodeOK
tidak terpengaruh oleh keangggotaanERROR
ini. Kolom deskripsi dapat memberikan informasi selengkapnya tentang penyebab kode ini.
Deskripsi di featureState
Deskripsi memberi Anda informasi lebih lanjut tentang status keanggotaan di
MCS. Anda dapat menemukan deskripsi tersebut di kolom state.description
dan Anda
dapat melihat deskripsi berikut:
Firewall successfully created
: Pesan ini menunjukkan bahwa aturan firewall anggota berhasil dibuat dan atau diperbarui. Kode keangggotaan adalahOK
.Firewall creation pending
: Pesan ini menunjukkan bahwa aturan firewall anggota sedang menunggu pembuatan atau update. Kode keanggotaan adalahWARNING
. Keanggotaan ini dapat mengalami masalah saat memperbarui dan menghubungkan ke Service multi-cluster baru dan keangggotaan ditambahkan saat aturan firewall tertunda.GKE Cluster missing
: Pesan ini menunjukkan bahwa cluster GKE yang terdaftar tidak tersedia dan atau telah dihapus. Kode keanggotaan adalahERROR
. Keanggotaan ini perlu dibatalkan pendaftarannya secara manual dari fleet setelah cluster GKE dihapus.Project that member lives in is missing required permissions and/or has not enabled all required APIs - additional setup steps are required
: Pesan ini menunjukkan adanya error StatusForbidden (403) internal, dan kode keangggotaan adalahFAILED
. Error ini terjadi dalam skenario berikut:Anda belum mengaktifkan API yang diperlukan dalam project anggota.
Jika cluster anggota berada di project yang terpisah dari fleet, lihat penyiapan lintas project untuk memastikan Anda telah menyelesaikan semua langkah yang diperlukan. Jika Anda telah menyelesaikan semua langkah, pastikan API berikut diaktifkan dalam project pendaftaran dengan perintah berikut:
gcloud services enable multiclusterservicediscovery.googleapis.com --project PROJECT_ID gcloud services enable dns.googleapis.com --project PROJECT_ID gcloud services enable trafficdirector.googleapis.com --project PROJECT_ID gcloud services enable cloudresourcemanager.googleapis.com --project PROJECT_ID
Ganti
PROJECT_ID
dengan project ID dari project tempat Anda mendaftarkan cluster.Akun layanan
mcsd
ataugkehub
memerlukan lebih banyak izin dalam project anggota.Akun layanan
mcsd
dangkehub
seharusnya otomatis dibuat di project host fleet dengan semua izin yang diperlukan. Untuk memverifikasi akun layanan yang ada, jalankan perintah berikut:gcloud projects get-iam-policy PROJECT_ID | grep gcp-sa-mcsd gcloud projects get-iam-policy PROJECT_ID | grep gcp-sa-gkehub
Ganti
PROJECT_ID
dengan project ID dari project host fleet.
Perintah ini akan menampilkan nama lengkap akun layanan
mcsd
dangkehub
.Multiple VPCs detected in the hub - VPC must be peered with other VPCs for successful connectivity
: Pesan ini terjadi saat cluster yang dihosting di VPC berbeda didaftarkan ke fleet yang sama. Status keanggotaan adalahOK
. Jaringan VPC cluster ditentukan oleh jaringan NetworkConfig. Service Multi-cluster memerlukan jaringan datar dan VPC ini harus di-peering secara aktif agar Service multi-cluster dapat terhubung satu sama lain dengan benar. Untuk mempelajari lebih lanjut, lihat Menyambungkan dua jaringan.Member does not exist in the same project as hub - additional setup steps are required, errors may occur if not completed.
: Pesan ini mengingatkan Anda bahwa cluster lintas project memerlukan langkah penyiapan tambahan. Status keanggotaan adalahOK
. Keanggotaan lintas project didefinisikan sebagai cluster anggota yang tidak berada dalam project yang sama dengan fleet. Untuk informasi selengkapnya, lihat penyiapan lintas project.Non-GKE clusters are currently not supported
: Pesan ini mengingatkan Anda bahwa MCS hanya mendukung cluster GKE. Cluster non-GKE tidak dapat ditambahkan ke MCS. Status keanggotaan adalahFAILED
.
Masalah umum
Service MCS dengan beberapa port
Ada masalah umum pada Service multi-cluster dengan beberapa port (TCP/UDP) di GKE Dataplane V2 tempat beberapa endpoint tidak diprogram dalam bidang data. Masalah ini berdampak pada GKE versi yang lebih lama dari 1.26.3-gke.400.
Sebagai solusinya, saat menggunakan GKE Dataplane V2, gunakan beberapa MCS dengan satu port, bukan satu MCS dengan beberapa port.
Nomor port yang digunakan kembali dalam satu Layanan MCS
Anda tidak dapat menggunakan kembali nomor port yang sama dalam Layanan MCS meskipun protokolnya berbeda.
Hal ini berlaku dalam satu Layanan Kubernetes dan di semua Layanan Kubernetes untuk satu Layanan MCS.
Perilaku ini akan diperbaiki dalam rilis MCS mendatang.
MCS dengan VPC Bersama
Dengan implementasi MCS saat ini, jika Anda men-deploy lebih dari satu fleet di VPC Bersama yang sama, metadata akan dibagikan antar-fleet. Saat Service dibuat dalam satu fleet, metadata Service akan diekspor atau diimpor di semua fleet lain yang merupakan bagian dari VPC Bersama yang sama dan terlihat oleh pengguna.
Perilaku ini akan diperbaiki dalam rilis MCS mendatang.
Health check menggunakan port default, bukan containerPort
Saat Anda men-deploy Service dengan kolom targetPort
yang merujuk ke port bernama
di Deployment, MCS akan mengonfigurasi port default untuk health check, bukan
containerPort
yang ditentukan.
Untuk menghindari masalah ini, gunakan nilai numerik di kolom Service
ports.targetPort
dan kolom Deployment
readinessProbe.httpGet.port
, bukan nilai bernama.
Perilaku ini akan diperbaiki dalam rilis MCS mendatang.
Langkah berikutnya
- Pelajari Service lebih lanjut.
- Pelajari cara mengekspos aplikasi dengan Service.
- Terapkan contoh Service multi-cluster dasar.