Pengontrol GKE Enterprise Ingress mengelola resource Compute Engine. Resource MultiClusterIngress
dan MultiClusterService
dipetakan ke resource Compute Engine yang berbeda, sehingga memahami hubungan antara resource ini akan membantu Anda memecahkan masalah. Misalnya, periksa
resource MultiClusterIngress
berikut:
apiVersion: extensions/v1beta1
kind: MultiClusterIngress
metadata:
name: foo-ingress
spec:
rules:
- host: store.foo.com
http:
paths:
- backend:
serviceName: store-foo
servicePort: 80
- host: search.foo.com
http:
paths:
- backend:
serviceName: search-foo
servicePort: 80
Compute Engine untuk pemetaan resource Multi Cluster Ingress
Tabel di bawah menunjukkan pemetaan resource fleet ke resource yang dibuat di cluster Kubernetes dan Google Cloud:
Resource Kubernetes | Resource Google Cloud | Deskripsi |
---|---|---|
MultiClusterIngress | Aturan penerusan | VIP load balancer HTTP(S). |
Proxy target | Setelan penghentian HTTP/S yang diambil dari anotasi dan blok TLS. | |
Peta URL | Pemetaan jalur host virtual dari bagian aturan. | |
MultiClusterService | Layanan Kubernetes | Mendapatkan resource dari template. |
Layanan backend | Layanan backend dibuat untuk setiap pasangan (Service, ServicePort). | |
Network endpoint groups | Kumpulan Pod backend yang berpartisipasi dalam Service. |
Memeriksa resource load balancer Compute Engine
Setelah membuat load balancer, status Multi Cluster Ingress akan berisi nama setiap resource Compute Engine yang dibuat untuk menyusun load balancer. Contoh:
Name: shopping-service
Namespace: prod
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1beta1
Kind: MultiClusterIngress
Metadata:
Creation Timestamp: 2019-07-16T17:23:14Z
Finalizers:
mci.finalizer.networking.gke.io
Spec:
Template:
Spec:
Backend:
Service Name: shopping-service
Service Port: 80
Status:
VIP: 34.102.212.68
CloudResources:
Firewalls: "mci-l7"
ForwardingRules: "mci-abcdef-myforwardingrule"
TargetProxies: "mci-abcdef-mytargetproxy"
UrlMap: "mci-abcdef-myurlmap"
HealthChecks: "mci-abcdef-80-myhealthcheck"
BackendServices: "mci-abcdef-80-mybackendservice"
NetworkEndpointGroups: "k8s1-neg1", "k8s1-neg2", "k8s1-neg3"
VIP tidak dibuat
Jika Anda tidak melihat VIP, mungkin terjadi error saat pembuatannya. Untuk mengetahui terjadinya error, jalankan perintah berikut:
kubectl describe mci shopping-service
Output-nya mungkin terlihat seperti ini:
Name: shopping-service
Namespace: prod
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1beta1
Kind: MultiClusterIngress
Metadata:
Creation Timestamp: 2019-07-16T17:23:14Z
Finalizers:
mci.finalizer.networking.gke.io
Spec:
Template:
Spec:
Backend:
Service Name: shopping-service
Service Port: 80
Status:
VIP: 34.102.212.68
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning SYNC 29s multi-cluster-ingress-controller error translating MCI prod/shopping-service: exceeded 4 retries with final error: error translating MCI prod/shopping-service: multiclusterservice prod/shopping-service does not exist
Dalam contoh ini, errornya adalah pengguna tidak membuat
resource MultiClusterService
yang direferensikan oleh MultiClusterIngress
.
Respons 502
Jika load balancer memperoleh VIP, tetapi secara konsisten menyajikan respons 502, health check load balancer mungkin gagal. Health check dapat gagal karena dua alasan:
- Pod Aplikasi tidak responsif (misalnya, lihat proses debug Konsol Cloud).
- Firewall yang salah dikonfigurasi akan memblokir health checker Google untuk melakukan health check.
Dalam kasus #1, pastikan aplikasi Anda benar-benar menyajikan respons 200 pada jalur "/".
Dalam kasus #2, pastikan firewall bernama "mci-default-l7" ada di VPC Anda. Pengontrol Ingress membuat firewall di VPC Anda untuk memastikan health checker Google dapat menjangkau backend Anda. Jika firewall tidak ada, pastikan tidak ada otomatisasi eksternal yang menghapus firewall ini setelah dibuat.
Traffic tidak ditambahkan ke atau dihapus dari cluster
Saat menambahkan Keanggotaan baru, traffic harus menjangkau backend di
cluster dasar jika memungkinkan. Demikian pula, jika Keanggotaan dihapus, tidak ada
traffic yang akan menjangkau backend di cluster yang mendasarinya. Jika Anda tidak
mengamati perilaku ini, periksa apakah ada error pada resource MultiClusterIngress
dan
MultiClusterService
.
Kasus umum yang menyebabkan error ini terjadi adalah menambahkan Keanggotaan baru di cluster GKE yang tidak berada dalam mode native VPC atau menambahkan Keanggotaan baru tetapi tidak men-deploy aplikasi di cluster GKE.
Jelaskan
MultiClusterService
:kubectl describe mcs zone-svc
Jelaskan
MultiClusterIngress
:kubectl describe mci zone-mci
Migrasi cluster konfigurasi
Untuk memahami lebih lanjut kasus penggunaan migrasi, lihat Konsep desain cluster konfigurasi.
Migrasi cluster konfigurasi dapat menjadi operasi yang mengganggu jika tidak ditangani dengan benar. Ikuti panduan ini saat melakukan migrasi cluster konfigurasi:
- Pastikan untuk menggunakan
anotasi static-ip
pada resource
MultiClusterIngress
Anda. Jika hal ini tidak dilakukan, traffic akan terganggu saat migrasi. IP sementara akan dibuat ulang saat memigrasikan cluster konfigurasi. - Resource
MultiClusterIngress
danMultiClusterService
harus di-deploy secara identik ke cluster konfigurasi yang sudah ada dan yang baru. Perbedaan di antara resource tersebut akan menghasilkan rekonsiliasi resourceMultiClusterService
danMultiClusterIngress
yang berbeda dalam cluster konfigurasi baru. - Hanya satu cluster konfigurasi yang aktif kapan saja. Sebelum cluster konfigurasi diubah, resource
MultiClusterIngress
danMultiClusterService
di cluster konfigurasi baru tidak akan memengaruhi resource load balancer.
Untuk memigrasikan cluster konfigurasi, jalankan perintah berikut:
gcloud container fleet ingress update \
--config-membership=projects/project_id/locations/global/memberships/new_config_cluster
Verifikasi bahwa perintah dijalankan dengan memastikan tidak ada error yang terlihat dalam status Fitur:
gcloud container fleet ingress describe
Proses debug konsol
Pada umumnya, memeriksa status load balancer yang tepat sangat membantu saat melakukan proses debug. Anda dapat menemukan load balancer dengan membuka Load balancing di Konsol Google Cloud.
Kode Error/Peringatan
Multi Cluster Ingress memunculkan kode error dan peringatan pada resource MultiClusterIngress
dan MultiClusterService
serta kolom Deskripsi multiclusteringress
gcloud untuk masalah umum. Pesan ini telah mendokumentasikan kode error dan peringatan untuk memudahkan memahami apa artinya ketika sesuatu tidak beroperasi seperti yang diharapkan. Setiap kode terdiri dari ID error dalam format
AVMBR123
, dengan 123
adalah angka unik yang sesuai dengan error atau
peringatan beserta saran cara mengatasinya.
AVMBR101: Annotation [NAME] not recognized
Error ini ditampilkan saat anotasi ditentukan pada manifes MultiClusterIngress
atau MultiClusterService
yang tidak dikenali. Ada beberapa
alasan mengapa anotasi mungkin tidak dikenali:
Anotasi tidak didukung di Multi Cluster Ingress. Hal ini mungkin dapat terjadi jika menganotasi resource yang tidak diharapkan digunakan oleh pengontrol Ingress GKE Enterprise.
Anotasi didukung, tetapi salah eja sehingga tidak dikenali.
Untuk kedua kasus tersebut, lihat dokumentasi untuk memahami anotasi yang didukung dan cara menentukannya.
AVMBR102: [RESOURCE_NAME] not found
Error ini ditampilkan saat resource tambahan ditentukan dalam MultiClusterIngress
, tetapi tidak dapat ditemukan dalam Keanggotaan Konfigurasi. Misalnya,
error ini ditampilkan jika MultiClusterIngress
merujuk ke MultiClusterService
yang tidak dapat ditemukan, atau MultiClusterService
merujuk pada BackendConfig yang
tidak dapat ditemukan. Ada beberapa alasan mengapa resource tidak dapat ditemukan:
- Tidak berada dalam namespace yang benar. Pastikan bahwa resource yang saling merujuk berada dalam namespace yang sama.
- Nama resource salah eja.
- Resource ini benar-benar tidak ada dengan namespace + nama yang tepat. Jika demikian, buat namespace + nama yang tepat.
AVMBR103: [CLUSTER_SELECTOR] is invalid
Error ini ditampilkan saat pemilih cluster yang ditentukan pada MultiClusterService
tidak valid. Ada beberapa alasan mengapa pemilih ini tidak valid:
- String yang diberikan berisi kesalahan ketik.
- String yang disediakan merujuk pada keanggotaan cluster yang sudah tidak ada lagi di fleet.
AVMBR104: Cannot find NEGs for Service Port [SERVICE_PORT]
Error ini ditampilkan saat NetworkEndpointGroup (NEG) untuk MultiClusterService
tertentu
dan pasangan port layanan tidak dapat ditemukan. NEG adalah
resource yang berisi endpoint Pod di setiap cluster backend. Alasan
utama kemungkinan tidak adanya NEG adalah karena terjadi error saat membuat
atau memperbarui Service Turunan di cluster backend Anda. Lihat Peristiwa di resource MultiClusterService
untuk informasi selengkapnya.
AVMBR105: Missing GKE Enterprise license.
Error ini ditampilkan di bagian status Feature, dan menunjukkan bahwa GKE Enterprise API (anthos.googleapis.com) tidak diaktifkan.
AVMBR106: Derived service is invalid: [REASON].
Error ini ditampilkan di bagian peristiwa resource MultiClusterService
. Salah satu
alasan umum terjadinya error ini adalah resource Service yang berasal dari
MultiClusterService
memiliki spesifikasi yang tidak valid.
Misalnya, MultiClusterService
ini tidak memiliki ServicePort
yang ditentukan
dalam spesifikasinya.
apiVersion: networking.gke.io/v1
kind: MultiClusterService
metadata:
name: zone-mcs
namespace: whereami
spec:
clusters:
- link: "us-central1-a/gke-us"
- link: "europe-west1-c/gke-eu"
AVMBR107: Missing GKE cluster resource link in Membership.
Error ini ditampilkan di bagian status Fitur dan terjadi karena tidak ada cluster GKE yang mendasari resource Keanggotaan. Anda dapat memverifikasinya dengan menjalankan perintah berikut:
gcloud container fleet memberships describe membership-name
serta memastikan bahwa tidak ada link resource cluster GKE di bagian bawah kolom endpoint.
AVMBR108: GKE cluster [NAME] not found.
Error ini ditampilkan dalam status Fitur dan ditampilkan jika cluster GKE yang mendasari untuk Keanggotaan tidak ada.
AVMBR109: [NAME] is not a VPC-native GKE cluster.
Error ini ditampilkan di bagian status Fitur. Error ini ditampilkan jika cluster GKE yang ditentukan adalah cluster berbasis rute. Pengontrol Multi Cluster Ingress membuat load balancer berbasis container menggunakan NEG. Cluster harus berupa VPC native agar dapat menggunakan load balancer berbasis container.
Untuk informasi selengkapnya, lihat Membuat cluster VPC native.
AVMBR110: [IAM_PERMISSION] permission missing for GKE cluster [NAME].
Error ini ditampilkan di bagian status Fitur. Ada beberapa alasan terjadinya error ini:
- Cluster GKE yang mendasari untuk Keanggotaan terletak di project yang berbeda dengan Keanggotaan itu sendiri.
- Izin IAM yang ditentukan telah dihapus dari agen layanan
MultiClusterIngress
.
AVMBR111: Failed to get Config Membership: [REASON].
Error ini ditampilkan di bagian status Fitur. Alasan utama terjadinya error ini adalah karena Keanggotaan Konfigurasi dihapus saat Fitur diaktifkan.
Anda tidak perlu menghapus Keanggotaan Konfigurasi. Jika Anda ingin mengubahnya, ikuti langkah-langkah migrasi cluster konfigurasi.
AVMBR112: HTTPLoadBalancing Addon is disabled in GKE Cluster [NAME].
Error ini ditampilkan dalam status Fitur dan terjadi saat add-on HTTPLoadBalancing
dinonaktifkan di cluster GKE. Anda dapat mengupdate
cluster GKE untuk mengaktifkan add-on HTTPLoadBalancing
:
gcloud container clusters update name --update-addons=HttpLoadBalancing=ENABLED
AVMBR113: This resource is orphaned.
Dalam beberapa kasus, kegunaan resource bergantung pada resource yang direkomendasikan oleh
resource lain. Error ini ditampilkan saat resource Kubernetes dibuat, tetapi tidak direkomendasikan oleh resource lain. Misalnya, Anda akan melihat error ini jika
membuat resource BackendConfig
yang tidak direkomendasikan oleh
MultiClusterService
.