Multi-jaringan GKE memungkinkan Anda menghubungkan workload ke beberapa
jaringan VPC. Anda dapat mengekspos Pod multi-jaringan ini ke klien internal atau eksternal menggunakan Layanan Kubernetes type: LoadBalancer.
GKE menyediakan load balancer L4 untuk Layanan yang mengirim traffic ke Pod di jaringan sekunder tertentu. Google Cloud
Dokumen ini menjelaskan cara GKE menerapkan LoadBalancerLayanan untuk Pod multi-jaringan. Dokumen ini mencakup konfigurasi, kemampuan, dan batasan fitur yang diperlukan.
Cara kerja Layanan LoadBalancer multi-jaringan
Untuk mengekspos workload multi-jaringan, Anda membuat Service dari type:
LoadBalancer. Service ini harus menyertakan pemilih khusus yang menargetkan Pod
berdasarkan jaringan antarmuka sekundernya. Anda juga menambahkan anotasi untuk
menentukan apakah akan membuat load balancer internal atau eksternal.
Label networking.gke.io/network di pemilih memfilter endpoint menurut
jaringan. Hal ini memastikan bahwa load balancer hanya mengirimkan traffic ke antarmuka Pod yang terhubung ke jaringan yang ditentukan.
Layanan LoadBalancer internal
Untuk membuat load balancer internal, tambahkan anotasi
networking.gke.io/load-balancer-type: "Internal" ke manifes
Service Anda. Contoh berikut menunjukkan Layanan yang membuat load balancer internal untuk menargetkan Pod di jaringan dmz:
apiVersion: v1
kind: Service
metadata:
name: web-app-internal-lb
namespace: default
annotations:
networking.gke.io/load-balancer-type: "Internal"
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
networking.gke.io/network: dmz
app: web-app
type: LoadBalancer
Service LoadBalancer Eksternal
Untuk membuat load balancer jaringan eksternal berbasis layanan backend, tambahkan anotasi
cloud.google.com/l4-rbs: enabled ke manifes Service Anda. Contoh berikut menunjukkan Layanan yang membuat load balancer eksternal untuk menargetkan Pod di jaringan dmz:
apiVersion: v1
kind: Service
metadata:
name: web-app-external-lb
namespace: default
annotations:
cloud.google.com/l4-rbs: enabled
spec:
externalTrafficPolicy: Local
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
networking.gke.io/network: dmz
app: web-app
type: LoadBalancer
Konfigurasi pod dan jaringan
Pod Anda harus memiliki antarmuka di jaringan yang ditargetkan oleh LoadBalancerService. Anda juga harus mengonfigurasi perutean dalam Pod agar dapat merespons permintaan dengan benar di antarmuka jaringan yang sesuai.
Anda dapat mengonfigurasi perutean Pod dengan salah satu cara berikut:
Menetapkan antarmuka default: Gunakan anotasi
networking.gke.io/default-interfacepada Pod untuk menetapkan antarmuka jaringan sekunder sebagai rute default.Mengonfigurasi perutean berbasis kebijakan: Gunakan
initContainerdengan kemampuanNET_ADMINuntuk mengonfigurasi aturan perutean di dalam Pod.
Contoh berikut menunjukkan manifes Deployment untuk Pod dengan antarmuka
di jaringan dmz. Anotasi networking.gke.io/default-interface menetapkan
antarmuka dmz (eth1) sebagai rute default.
apiVersion: apps/v1
kind: Deployment
metadata:
name: web-app
labels:
app: web-app
spec:
replicas: 3
selector:
matchLabels:
app: web-app
template:
metadata:
labels:
app: web-app
annotations:
networking.gke.io/default-interface: 'eth1'
networking.gke.io/interfaces: |-
[
{"interfaceName":"eth0","network":"default"},
{"interfaceName": "eth1","network": "dmz"}
]
spec:
containers:
- name: whereami
image: us-docker.pkg.dev/google-samples/containers/gke/whereami:v1
ports:
- containerPort: 8080
Memverifikasi endpoint multi-jaringan
GKE menggunakan pengontrol khusus, multinet-endpointslice-controller.gke.io, untuk mengelola endpoint bagi Layanan multi-jaringan. Pengontrol ini membuat objek EndpointSlice untuk Layanan multi-jaringan Anda. Alamat IP dalam objek EndpointSlice ini termasuk dalam jaringan sekunder yang ditentukan dalam Pemilih layanan.
Jika load balancer tidak memiliki backend yang sehat, periksa EndpointSlice untuk
Layanan guna memverifikasi bahwa pengontrol telah memilih alamat IP Pod yang benar. Jika
EndpointSlice tidak memiliki endpoint, periksa apakah label pemilih Service cocok dengan
Pod yang sedang berjalan dan apakah pemilih networking.gke.io/network cocok dengan
jaringan Pod.
Batasan
Layanan LoadBalancer Multi-network memiliki batasan berikut:
- Load balancer internal memerlukan subset GKE.
- Load balancer berbasis grup instance atau kumpulan target tidak didukung.
- Layanan yang menggunakan
externalTrafficPolicy: Clustertidak didukung. - Layanan tidak dapat menargetkan Pod
hostNetwork. - Jaringan stack ganda dan IPv6 tidak didukung.
- Anda tidak dapat mengubah jaringan Layanan yang ada.
- Hanya jaringan Layer 3 yang didukung.
Langkah berikutnya
- Pelajari cara men-deploy layanan multi-jaringan dengan mengikuti Panduan Pengguna Layanan Multi-Jaringan.
- Baca Panduan Pengguna Multi-Jaringan GKE untuk mengetahui informasi tentang cara menyiapkan VPC dan membuat cluster GKE dengan jaringan tambahan.