Halaman ini menunjukkan cara menyiapkan dan menggunakan Ingress untuk Load Balancer Aplikasi internal di Google Kubernetes Engine (GKE). Ingress menyediakan dukungan bawaan untuk load balancing internal melalui pengontrol Ingress GKE.
Untuk mempelajari lebih lanjut fitur yang didukung Ingress untuk Load Balancer Aplikasi internal, lihat Fitur Ingress. Anda juga dapat mempelajari lebih lanjut cara kerja Ingress untuk Load Balancer Aplikasi internal di Ingress untuk Load Balancer Aplikasi internal.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Persyaratan
Ingress untuk Load Balancer Aplikasi internal memiliki persyaratan berikut:
- Cluster Anda harus menggunakan versi GKE yang lebih baru dari 1.16.5-gke.10.
- Cluster Anda harus bersifat VPC-native.
- Cluster Anda harus mengaktifkan add-on
HttpLoadBalancing
. Add-on ini diaktifkan secara default. Anda tidak boleh menonaktifkannya. - Anda harus menggunakan Grup Endpoint Jaringan (NEG) sebagai backend untuk Service Anda.
Men-deploy Ingress untuk Load Balancer Aplikasi internal
Latihan berikut menunjukkan cara men-deploy Ingress untuk Load Balancer Aplikasi internal:
- Menyiapkan lingkungan Anda.
- Membuat cluster.
- Men-deploy aplikasi.
- Men-deploy Service.
- Men-deploy Ingress.
- Memvalidasi deployment.
- Menghapus resource Ingress.
Menyiapkan lingkungan Anda
Sebelum dapat men-deploy resource load balancer melalui API Ingress Kubernetes, Anda harus menyiapkan lingkungan jaringan agar proxy load balancer dapat di-deploy di region yang ditentukan.
Buat subnet khusus proxy:
gcloud compute networks subnets create proxy-only-subnet \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=COMPUTE_REGION \
--network=NETWORK_NAME \
--range=10.129.0.0/23
Ganti kode berikut:
COMPUTE_REGION
: Region Compute Engine.NETWORK_NAME
: nama jaringan untuk subnet.
Untuk informasi selengkapnya, lihat mengonfigurasi subnet khusus proxy.
Membuat aturan firewall
Pengontrol Ingress tidak membuat aturan firewall yang mengizinkan koneksi dari proxy load balancer di proxy-subnet. Anda harus membuat aturan firewall ini secara manual. Namun, pengontrol Ingress membuat aturan firewall yang mengizinkan ingress untuk health check Google Cloud.
Buat aturan firewall untuk mengizinkan koneksi dari proxy load balancer di subnet khusus proxy ke port pemrosesan pod:
gcloud compute firewall-rules create allow-proxy-connection \
--allow=TCP:CONTAINER_PORT \
--source-ranges=10.129.0.0/23 \
--network=NETWORK_NAME
Ganti CONTAINER_PORT
dengan nilai port yang
diproses Pod, seperti 9376
.
Membuat cluster
Di bagian ini, Anda akan membuat cluster VPC native yang dapat digunakan dengan Ingress untuk Load Balancer Aplikasi internal. Anda dapat membuat cluster ini menggunakan Google Cloud CLI atau konsol Google Cloud.
gcloud
Buat cluster di jaringan yang sama dengan subnet khusus proxy:
gcloud container clusters create-auto CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--network=NETWORK_NAME
Ganti kode berikut:
CLUSTER_NAME
: nama untuk cluster Anda.COMPUTE_LOCATION
: Lokasi Compute Engine untuk cluster. Anda harus menggunakan lokasi yang sama dengan proxy-subnet yang Anda buat di bagian sebelumnya.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Klik add_box Create.
Di bagian Autopilot, klik Configure.
Di bagian Cluster basics, selesaikan langkah-langkah berikut:
- Masukkan Name untuk cluster Anda.
- Untuk Location type, pilih Compute Engine region untuk cluster Anda. Anda harus menggunakan region yang sama dengan proxy-subnet yang Anda buat di bagian sebelumnya.
Di panel navigasi, klik Networking.
Di daftar Network, pilih jaringan tempat Anda ingin membuat cluster. Jaringan ini harus berada di jaringan VPC yang sama dengan proxy-subnet.
Pada daftar Node subnet, pilih subnet proxy yang Anda buat
Klik Create.
Men-deploy aplikasi web
Di bagian ini, Anda akan membuat Deployment.
Untuk membuat Deployment:
Simpan manifes contoh berikut sebagai
web-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: labels: app: hostname name: hostname-server spec: selector: matchLabels: app: hostname minReadySeconds: 60 replicas: 3 template: metadata: labels: app: hostname spec: containers: - image: registry.k8s.io/serve_hostname:v1.4 name: hostname-server ports: - containerPort: 9376 protocol: TCP terminationGracePeriodSeconds: 90
Manifes ini menjelaskan Deployment yang memproses server HTTPS pada port 9376. Deployment ini juga mengelola Pod untuk aplikasi Anda. Setiap Pod menjalankan satu container aplikasi dengan server HTTPS yang menampilkan nama host server aplikasi sebagai respons. Nama host default Pod adalah nama Pod. Container juga menangani penghentian secara tuntas.
Terapkan manifes ke cluster:
kubectl apply -f web-deployment.yaml
Men-deploy Service sebagai Grup Endpoint Jaringan (NEG)
Di bagian ini, Anda akan membuat resource Service. Service memilih penampung backend berdasarkan labelnya sehingga pengontrol Ingress dapat memprogramnya sebagai endpoint backend. Ingress untuk Load Balancer Aplikasi internal mengharuskan Anda menggunakan NEG sebagai backend. Fitur ini tidak mendukung Grup Instance sebagai backend. Karena backend NEG diperlukan, anotasi NEG berikut diperlukan saat Anda men-deploy Service yang diekspos melalui Ingress:
annotations:
cloud.google.com/neg: '{"ingress": true}'
Service Anda akan dianotasi otomatis dengan cloud.google.com/neg: '{"ingress": true}'
jika semua kondisi berikut terpenuhi:
- Anda menggunakan cluster VPC native.
- Anda tidak menggunakan VPC Bersama.
- Anda tidak menggunakan Kebijakan Jaringan GKE.
Anotasi otomatis ditambahkan menggunakan MutatingWebhookConfiguration
dengan nama
neg-annotation.config.common-webhooks.networking.gke.io
. Anda dapat memeriksa apakah
MutatingWebhookConfiguration
ada dengan perintah berikut:
kubectl get mutatingwebhookconfigurations
Penggunaan NEG memungkinkan pengontrol Ingress menjalankan load balancing native container. Traffic di-load balance dari proxy Ingress langsung ke IP Pod, bukan melintasi IP node atau jaringan kube-proxy. Selain itu, Gate kesiapan Pod diimplementasikan untuk menentukan kondisi Pod dari perspektif load balancer, dan bukan hanya pemeriksaan kesiapan dan keaktifan Kubernetes. Gate kesiapan Pod memastikan bahwa traffic tidak dihapus selama peristiwa siklus proses, seperti proses memulai Pod, hilangnya Pod, atau hilangnya node.
Jika anotasi NEG tidak disertakan, Anda akan menerima peringatan pada objek Ingress yang mencegah Anda mengonfigurasi Load Balancer Aplikasi internal. Peristiwa Kubernetes juga dibuat di Ingress jika anotasi NEG tidak disertakan. Pesan berikut adalah contoh pesan peristiwa:
Message
-------
error while evaluating the ingress spec: could not find port "8080" in service "default/no-neg-svc"
NEG tidak dibuat hingga Ingress mereferensikan Service. NEG tidak muncul di Compute Engine hingga Ingress dan Service yang direferensikannya ada. NEG adalah resource zona dan untuk cluster multi-zona, satu NEG dibuat per Service per zona.
Untuk membuat Service:
Simpan manifes contoh berikut sebagai
web-service.yaml
:apiVersion: v1 kind: Service metadata: name: hostname namespace: default annotations: cloud.google.com/neg: '{"ingress": true}' spec: ports: - name: host1 port: 80 protocol: TCP targetPort: 9376 selector: app: hostname type: ClusterIP
Terapkan manifes ke cluster:
kubectl apply -f web-service.yaml
Men-deploy Ingress
Di bagian ini, Anda akan membuat resource Ingress yang memicu deployment load balancer Compute Engine melalui pengontrol Ingress. Ingress untuk Load Balancer Aplikasi internal memerlukan anotasi berikut:
annotations:
kubernetes.io/ingress.class: "gce-internal"
Anda tidak dapat menggunakan kolom ingressClassName
untuk menentukan Ingress GKE. Anda harus menggunakan anotasi kubernetes.io/ingress.class
. Untuk informasi
selengkapnya, lihat
Perilaku pengontrol Ingress GKE.
Untuk membuat Ingress:
Simpan manifes contoh berikut sebagai
internal-ingress.yaml
:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ilb-demo-ingress namespace: default annotations: kubernetes.io/ingress.class: "gce-internal" spec: defaultBackend: service: name: hostname port: number: 80
Terapkan manifes ke cluster:
kubectl apply -f internal-ingress.yaml
Memvalidasi keberhasilan deployment Ingress
Di bagian ini, Anda akan memvalidasi keberhasilan deployment.
Diperlukan waktu beberapa menit hingga resource Ingress disediakan sepenuhnya. Selama waktu ini, pengontrol Ingress membuat item seperti aturan penerusan, layanan backend, peta URL, dan NEG.
Untuk mengambil status resource Ingress yang Anda buat di bagian sebelumnya, jalankan perintah berikut:
kubectl get ingress ilb-demo-ingress
Output-nya mirip dengan berikut ini:
NAME HOSTS ADDRESS PORTS AGE
ilb-demo-ingress * 10.128.0.58 80 59s
Saat kolom ADDRESS
terisi, Ingress sudah siap. Penggunaan alamat RFC 1918 dalam kolom ini menunjukkan IP internal di dalam VPC.
Karena Load Balancer Aplikasi internal adalah load balancer regional, IP virtual (VIP) hanya dapat diakses dari klien di dalam region dan VPC yang sama. Setelah mengambil VIP load balancer, Anda dapat menggunakan alat (misalnya, curl
) untuk melakukan panggilan HTTP GET
ke VIP dari dalam VPC.
Untuk melakukan panggilan HTTP GET
, selesaikan langkah-langkah berikut:
Untuk menjangkau VIP Ingress dari dalam VPC, deploy VM dalam region dan jaringan yang sama dengan cluster:
gcloud compute instances create l7-ilb-client \ --image-family=debian-10 \ --image-project=debian-cloud \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --zone=COMPUTE_ZONE \ --tags=allow-ssh
Ganti kode berikut:
SUBNET_NAME
: nama subnet di jaringan.COMPUTE_ZONE
: Zona Compute Engine di region.
Untuk mempelajari lebih lanjut cara membuat instance, baca Membuat dan memulai instance VM.
Untuk mengakses VIP internal dari dalam VM, gunakan
curl
:Terapkan SSH ke VM yang Anda buat pada langkah sebelumnya:
gcloud compute ssh l7-ilb-client \ --zone=COMPUTE_ZONE
Gunakan
curl
untuk mengakses VIP aplikasi internal:curl 10.128.0.58 hostname-server-6696cf5fc8-z4788
Keberhasilan respons HTTP dan nama host salah satu penampung backend menunjukkan bahwa jalur load balancing lengkap berfungsi dengan benar.
Menghapus resource Ingress
Menghapus resource Ingress dan Service juga akan menghapus resource load balancing Compute Engine yang terkait dengannya. Untuk mencegah kebocoran resource, pastikan resource Ingress dihapus saat Anda tidak lagi memerlukannya. Anda juga harus menghapus resource Ingress dan Service sebelum menghapus cluster. Jika tidak, resource load balancing Compute Engine akan menjadi tidak berguna.
Untuk menghapus Ingress, selesaikan langkah-langkah berikut:
Menghapus Ingress. Misalnya, untuk menghapus Ingress yang Anda buat di halaman ini, jalankan perintah berikut:
kubectl delete ingress ilb-demo-ingress
Menghapus Ingress akan menghapus aturan penerusan, layanan backend, dan peta URL yang terkait dengan resource Ingress ini.
Menghapus Service. Misalnya, untuk menghapus Service yang Anda buat di halaman ini, jalankan perintah berikut:
kubectl delete service hostname
Menghapus Service akan menghapus NEG yang terkait dengan Service.
Untuk men-deploy aplikasi di GKE dan mengekspos aplikasi dengan alamat IP pribadi yang di-load balance, lihat Ingress Internal Dasar.
Alamat IP statis
Resource Ingress internal mendukung penentuan alamat IP statis dan sementara. Jika alamat IP tidak ditentukan, alamat IP yang tersedia akan otomatis dialokasikan dari subnet node GKE. Namun, resource Ingress tidak menyediakan alamat IP dari subnet khusus proxy karena subnet tersebut hanya digunakan untuk pemakaian proxy internal. Alamat IP sementara ini dialokasikan ke Ingress hanya untuk siklus proses resource Ingress internal. Jika menghapus Ingress dan membuat Ingress baru dari file manifes yang sama, Anda tidak dijamin akan mendapatkan alamat IP eksternal yang sama.
Jika menginginkan alamat IP permanen yang tidak bergantung pada siklus proses
resource Ingress internal, Anda harus mencadangkan alamat IP internal
statis regional. Anda kemudian dapat menentukan alamat IP statis menggunakan
anotasi kubernetes.io/ingress.regional-static-ip-name
pada resource
Ingress.
Contoh berikut menunjukkan cara menambahkan anotasi ini:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
annotations:
kubernetes.io/ingress.regional-static-ip-name: STATIC_IP_NAME
kubernetes.io/ingress.class: "gce-internal"
Ganti STATIC_IP_NAME
dengan nama IP statis yang memenuhi kriteria berikut:
- Buat alamat IP statis sebelum men-deploy Ingress. Load balancer tidak melakukan deployment hingga IP statis ada, dan mereferensikan resource alamat IP yang tidak ada tidak akan menciptakan IP statis. Jika Anda memodifikasi Ingress yang sudah ada untuk menggunakan alamat IP statis dan bukan alamat IP sementara, GKE dapat mengubah alamat IP load balancer saat GKE membuat ulang aturan penerusan load balancer.
- IP statis direservasi di project layanan untuk Ingress yang di-deploy dalam project layanan VPC Bersama.
- Referensikan resource alamat IP Google Cloud berdasarkan namanya, bukan alamat IP-nya.
- Alamat IP harus berasal dari subnet di region yang sama dengan cluster GKE. Anda dapat menggunakan subnet pribadi yang tersedia dalam region tersebut (dengan pengecualian subnet khusus proxy). Resource Ingress yang berbeda juga dapat memiliki alamat dari subnet yang berbeda.
HTTPS antara klien dan load balancer
Ingress untuk load balancing internal mendukung penyaluran sertifikat TLS ke klien. Anda dapat menyalurkan sertifikat TLS melalui Kubernetes Secrets atau melalui sertifikat SSL regional yang telah dibagikan di Google Cloud. Anda juga dapat menentukan beberapa sertifikat per resource Ingress. Penggunaan HTTPS dan HTTP secara bersamaan didukung untuk GKE 1.25+. Untuk mengaktifkan fitur ini, Anda perlu membuat alamat IP statis dengan PURPOSE=SHARED_LOADBALANCER_VIP, dan mengonfigurasinya di ingress. Jika alamat IP statis tidak diberikan, hanya traffic HTTPS yang diizinkan, dan Anda harus mengikuti dokumentasi untuk Menonaktifkan HTTP.
Langkah-langkah berikut menjelaskan cara membuat sertifikat di Google Cloud, lalu menyalurkannya melalui Ingress ke klien internal untuk traffic HTTPS dan HTTP:
Buat sertifikat regional:
gcloud compute ssl-certificates create CERT_NAME \ --certificate CERT_FILE_PATH \ --private-key KEY_FILE_PATH \ --region COMPUTE_REGION
Ganti kode berikut:
CERT_NAME
: nama untuk sertifikat yang Anda pilih.CERT_FILE_PATH
: jalur ke file sertifikat lokal Anda untuk membuat sertifikat yang dikelola sendiri. Sertifikat harus dalam format PEM.KEY_FILE_PATH
: jalur ke file kunci pribadi lokal. Kunci pribadi harus dalam format PEM dan harus menggunakan enkripsi RSA atau ECDSA.COMPUTE_REGION
: region Compute Engine untuk sertifikat Anda.
Pesan dan terapkan alamat IP statis dengan mengikuti Alamat IP statis.
Simpan manifes contoh berikut sebagai
ingress-pre-shared-cert.yaml
:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ilb-demo-ing namespace: default annotations: ingress.gcp.kubernetes.io/pre-shared-cert: "CERT_NAME" kubernetes.io/ingress.regional-static-ip-name: STATIC_IP_NAME kubernetes.io/ingress.class: "gce-internal" spec: rules: - host: DOMAIN http: paths: - pathType: ImplementationSpecific backend: service: name: SERVICE_NAME port: number: 80
Ganti kode berikut:
DOMAIN
: domain Anda.CERT_NAME
: nama sertifikat yang Anda buat di bagian sebelumnya.SERVICE_NAME
: Nama Service Anda.
Terapkan manifes ke cluster:
kubectl apply -f ingress-pre-shared-cert.yaml
HTTPS antara load balancer dan aplikasi
Jika aplikasi berjalan di Pod GKE dan dapat menerima permintaan HTTPS, Anda dapat mengonfigurasi load balancer untuk menggunakan HTTPS saat meneruskan permintaan ke aplikasi Anda. Untuk informasi selengkapnya, lihat HTTPS (TLS) antara load balancer dan aplikasi.
VPC Bersama
Menambahkan anotasi NEG secara manual
Jika GKE tempat Anda men-deploy resource Ingress berada dalam project layanan VPC Bersama, layanan tersebut tidak secara otomatis dianotasi dengan anotasi cloud.google.com/neg: '{"ingress": true}'
karena MutatingWebhookConfiguration
yang bertanggung jawab untuk memasukkan anotasi ke layanan
tidak diinstal.
Anda harus menambahkan anotasi NEG ke manifes Service yang ditampilkan melalui Ingress untuk Load Balancer Aplikasi internal.
Aturan firewall VPC
Jika cluster GKE tempat Anda men-deploy resource Ingress berada dalam project layanan VPC Bersama, dan Anda ingin agar bidang kontrol GKE mengelola resource firewall di project host, akun layanan GKE project layanan harus diberi izin IAM yang sesuai di project host sesuai dengan Mengelola resource firewall untuk cluster dengan VPC Bersama. Dengan begitu, pengontrol Ingress dapat membuat aturan firewall yang mengizinkan traffic Ingress untuk health check Google Cloud.
Berikut contoh peristiwa yang mungkin ada dalam log resource Ingress. Error ini terjadi saat pengontrol Ingress tidak dapat membuat aturan firewall guna mengizinkan traffic masuk untuk health check Google Cloud jika izin tidak dikonfigurasi dengan benar.
Firewall change required by security admin: `gcloud compute firewall-rules update <RULE_NAME> --description "GCE L7 firewall rule" --allow tcp:<PORT> --source-ranges 130.211.0.0/22,35.191.0.0/16 --target-tags <TARGET_TAG> --project <HOST_PROJECT>
Jika memilih untuk menyediakan aturan firewall secara manual dari project host, Anda dapat membisukan peristiwa firewallXPNError
dengan menambahkan anotasi networking.gke.io/suppress-firewall-xpn-error: "true"
ke resource Ingress.
Ringkasan anotasi Ingress internal
Tabel berikut menunjukkan anotasi yang dapat Anda tambahkan saat membuat resource Ingress dan Service untuk Ingress bagi Load Balancer Aplikasi internal.
Anotasi Ingress
Anotasi | Deskripsi |
---|---|
kubernetes.io/ingress.class |
Anda dapat menetapkan sebagai "gce-internal" untuk Ingress internal. Jika class ini tidak
ditentukan, resource Ingress akan ditafsirkan secara default sebagai Ingress eksternal.
Untuk informasi selengkapnya, lihat
Perilaku pengontrol Ingress GKE. |
kubernetes.io/ingress.allow-http |
Anda dapat mengizinkan traffic HTTP antara klien dan load balancer HTTP(S). Nilai yang mungkin adalah true dan false .
Nilai defaultnya adalah true . Untuk mengetahui informasi selengkapnya, lihat Menonaktifkan HTTP. |
ingress.gcp.kubernetes.io/pre-shared-cert |
Anda dapat mengupload sertifikat dan kunci ke project Google Cloud. Gunakan anotasi ini untuk mereferensikan sertifikat dan kunci. Untuk informasi selengkapnya, lihat Menggunakan beberapa sertifikat SSL dengan Load Balancer Aplikasi eksternal. |
networking.gke.io/suppress-firewall-xpn-error |
Di GLBC 1.4
dan yang lebih baru, Anda dapat menonaktifkan peristiwa
Tambahkan anotasi |
kubernetes.io/ingress.regional-static-ip-name |
Anda dapat menentukan alamat IP statis untuk menyediakan resource Ingress internal. Untuk informasi selengkapnya, lihat Alamat IP statis. |
Anotasi layanan yang terkait dengan Ingress
Anotasi | Deskripsi |
---|---|
cloud.google.com/backend-config |
Gunakan anotasi ini untuk mengonfigurasi layanan backend yang terkait dengan servicePort. Untuk informasi selengkapnya, lihat Konfigurasi Ingress. |
cloud.google.com/neg |
Gunakan anotasi ini untuk menentukan bahwa load balancer harus menggunakan grup endpoint jaringan. Untuk informasi selengkapnya, lihat Menggunakan Load Balancing berbasis Container. |
Pemecahan masalah
Memahami dan mengamati status Ingress biasanya melibatkan pemeriksaan resource terkait. Jenis masalah yang ditemukan sering kali mencakup resource load balancing tidak dibuat dengan benar, traffic tidak menjangkau backend, atau backend tampak tidak responsif.
Beberapa langkah pemecahan masalah umum mencakup:
- Memverifikasi bahwa traffic klien berasal dari dalam region dan VPC yang sama dengan load balancer.
- Memverifikasi bahwa Pod dan backend responsif.
- Memvalidasi jalur traffic ke VIP dan untuk health check Compute Engine guna memastikan jalur tidak diblokir oleh aturan firewall.
- Memeriksa error di peristiwa resource Ingress.
- Menjelaskan resource Ingress untuk melihat pemetaan ke resource Compute Engine.
- Memvalidasi bahwa resource load balancing Compute Engine sudah ada, memiliki konfigurasi yang benar, dan tidak melaporkan error.
Memfilter peristiwa Ingress
Kueri berikut memfilter error di seluruh peristiwa Ingress dalam cluster Anda:
kubectl get events --all-namespaces --field-selector involvedObject.kind=Ingress
Anda juga dapat memfilter berdasarkan objek atau nama objek:
kubectl get events --field-selector involvedObject.kind=Ingress,involvedObject.name=hostname-internal-ingress
Dalam error berikut, Anda dapat melihat bahwa Service yang dirujuk oleh Ingress tidak ada:
LAST SEEN TYPE REASON OBJECT MESSAGE
0s Warning Translate ingress/hostname-internal-ingress error while evaluating the ingress spec: could not find service "default/hostname-invalid"
Memeriksa resource load balancer Compute Engine
Perintah berikut menampilkan output lengkap untuk resource Ingress sehingga Anda dapat melihat pemetaan ke resource Compute Engine yang dibuat oleh pengontrol Ingress:
kubectl get ing INGRESS_FILENAME -o yaml
Ganti INGRESS_FILENAME
dengan nama file resource
Ingress Anda.
Output-nya mirip dengan berikut ini:
apiVersion: v1
items:
- apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/backends: '{"k8s1-241a2b5c-default-hostname-80-29269aa5":"HEALTHY"}'
ingress.kubernetes.io/forwarding-rule: k8s-fw-default-ilb-demo-ingress--241a2b5c94b353ec
ingress.kubernetes.io/target-proxy: k8s-tp-default-ilb-demo-ingress--241a2b5c94b353ec
ingress.kubernetes.io/url-map: k8s-um-default-ilb-demo-ingress--241a2b5c94b353ec
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"networking.k8s.io/v1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.class":"gce-internal"},"name":"ilb-demo-ingress","namespace":"default"},"spec":{"defaultBackend":{"service":{"name":"hostname"},"port":{"number":80}}}}
kubernetes.io/ingress.class: gce-internal
creationTimestamp: "2019-10-15T02:16:18Z"
finalizers:
- networking.gke.io/ingress-finalizer
generation: 1
name: ilb-demo-ingress
namespace: default
resourceVersion: "1538072"
selfLink: /apis/networking.k8s.io/v1/namespaces/default/ingresses/ilb-demo-ingress
uid: 0ef024fe-6aea-4ee0-85f6-c2578f554975
spec:
defaultBackend:
service:
name: hostname
port:
number: 80
status:
loadBalancer:
ingress:
- ip: 10.128.0.127
kind: List
metadata:
resourceVersion: ""
selfLink: ""
Anotasi ingress.kubernetes.io/backends
mencantumkan backend dan
statusnya. Pastikan backend Anda tercantum sebagai HEALTHY
.
Resource Compute Engine yang dibuat oleh Ingress dapat dikueri langsung untuk memahami status dan konfigurasinya. Menjalankan kueri ini juga dapat membantu saat memecahkan masalah.
Untuk menampilkan daftar semua aturan penerusan Compute Engine:
gcloud compute forwarding-rules list
Output-nya mirip dengan berikut ini:
NAME REGION IP_ADDRESS IP_PROTOCOL TARGET
k8s-fw-default-hostname-internal-ingress--42084f6a534c335b REGION_NAME 10.128.15.225 TCP REGION_NAME/targetHttpProxies/k8s-tp-default-hostname-internal-ingress--42084f6a534c335b
Untuk menampilkan daftar kondisi layanan backend, cantumkan layanan backend terlebih dahulu, lalu buat salinan nama layanan backend yang ingin Anda periksa:
gcloud compute backend-services list
Output-nya mirip dengan berikut ini:
NAME BACKENDS PROTOCOL
k8s1-42084f6a-default-hostname-80-98cbc1c1 REGION_NAME/networkEndpointGroups/k8s1-42084f6a-default-hostname-80-98cbc1c1 HTTP
Sekarang Anda dapat menggunakan nama layanan backend untuk mengkueri responsnya:
gcloud compute backend-services get-health k8s1-42084f6a-default-hostname-80-98cbc1c1 \
--region COMPUTE_REGION
Ganti COMPUTE_REGION
dengan region Compute Engine layanan backend.
Outputnya mirip dengan hal berikut ini:
backend: https://www.googleapis.com/compute/v1/projects/user1-243723/zones/ZONE_NAME/networkEndpointGroups/k8s1-42084f6a-default-hostname-80-98cbc1c1
status:
healthStatus:
- healthState: HEALTHY
Langkah berikutnya
Pelajari Ingress GKE untuk Load Balancer Aplikasi eksternal.
Baca ringkasan konseptual tentang Service di GKE.
Pelajari cara membuat Load Balancer Jaringan passthrough internal di GKE.
Implementasikan Ingress internal dasar.