Mengonfigurasi Service multi-cluster


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-on HttpLoadBalancing diaktifkan. Add-on HttpLoadBalancing 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:

  1. Menginstal Google Cloud SDK.

  2. Mengaktifkan Google Kubernetes Engine API:

    Mengaktifkan Google Kubernetes Engine API

  3. 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

  1. 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.

  2. Daftarkan cluster GKE Anda ke fleet. Sebaiknya daftarkan cluster dengan Workload Identity Federation untuk GKE yang aktif. Jika tidak mengaktifkan Workload Identity Federation 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.
  3. 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.

  4. 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.

  5. 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 bukan ACTIVE, 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:

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:

  1. Buat objek ServiceExport bernama export.yaml:

    # export.yaml
    kind: ServiceExport
    apiVersion: net.gke.io/v1
    metadata:
     namespace: NAMESPACE
     name: SERVICE_EXPORT_NAME
    

    Ganti kode berikut:

    • NAMESPACE: namespace objek ServiceExport. 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.
  2. 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 dan NAMESPACE: nilai yang Anda tentukan dalam objek ServiceExport.

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 anotasi net.gke.io/derived-service pada objek ServiceImport.
  • NAMESPACE: namespace objek ServiceExport.

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 dan NAMESPACE: nilai yang Anda tentukan dalam objek ServiceExport.
  • MEMBERSHIP_NAME: ID unik dalam fleet untuk cluster tempat Pod.
  • LOCATION: lokasi keanggotaan. Keanggotaan dapat berupa global, atau lokasinya adalah salah satu region atau zona tempat Pod berada, seperti us-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:

  1. 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 objek ServiceExport.
  2. Pastikan ServiceExport menghilang dari daftar dalam 30 menit.

  3. Batalkan pendaftaran cluster dari fleet jika tidak perlu didaftarkan untuk tujuan lain.

  4. 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.

  5. 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 total jumlah 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 kode OK tidak terpengaruh oleh keanggotaan FAILED ini. Kolom deskripsi dapat memberikan informasi selengkapnya tentang penyebab kode ini.

  • ERROR: Keanggotaan ini tidak memiliki aset. Keanggotaan lain di fleet dengan kode OK tidak terpengaruh oleh keangggotaan ERROR 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 adalah OK.

  • Firewall creation pending: Pesan ini menunjukkan bahwa aturan firewall anggota sedang menunggu pembuatan atau update. Kode keanggotaan adalah WARNING. 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 adalah ERROR. 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 adalah FAILED. 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 atau gkehub memerlukan lebih banyak izin dalam project anggota.

      Akun layanan mcsd dan gkehub 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 dan gkehub.

  • 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 adalah OK. 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 adalah OK. 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 adalah FAILED.

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