Halaman ini menjelaskan cara kerja penyamaran IP di Google Kubernetes Engine (GKE) dan menyediakan opsi konfigurasi untuk berbagai skenario.
Ringkasan penyamaran IP
Penyamaran IP adalah bentuk penafsiran alamat jaringan sumber (SNAT) yang melakukan penafsiran alamat IP many-to-one. GKE dapat menggunakan penyamaran IP untuk mengubah sumber alamat IP dari paket yang dikirim dari Pod.
Untuk mengetahui ringkasan yang lebih umum tentang penyamaran IP dalam penerapan Kubernetes, baca Panduan Pengguna Agen Penyamaran IP.
Penyamaran IP GKE
Jika penyamaran IP berlaku pada paket yang dikeluarkan oleh Pod, GKE akan mengubah alamat IP sumber paket dari alamat IP Pod ke alamat IP node dasar. Penyamaran alamat IP sumber paket berguna jika penerima dikonfigurasi untuk menerima paket hanya dari alamat IP node cluster.
Di node Linux, GKE mengonfigurasi aturan iptables
.
GKE menggunakan ip-masq-agent
DaemonSet
untuk mengonfigurasi bidang data yang sesuai.
Penyamaran IP tidak didukung dengan node pool Windows Server.
Penyamaran IP untuk cluster Standard
Di cluster Standard, perilaku penyamaran IP cluster dipengaruhi oleh tiga faktor:
- Apakah Anda telah melakukan deployment atau GKE telah otomatis men-deploy
ip-masq-agent
DaemonSet di dalam cluster. Untuk mempelajari skenario saat GKE men-deploy DaemonSetip-masq-agent
secara otomatis, lihat Kapanip-masq-agent
di-deploy secara otomatis. - Apakah Anda telah membuat daftar
nonMasqueradeCIDRs
kustom di configMapip-masq-agent
. - Jika tidak ada DaemonSet
ip-masq-agent
yang di-deploy di cluster, apakah Anda membuat cluster dengan flag--disable-default-snat
. Untuk mempelajari lebih lanjut flag ini, lihat Efek flag--disable-default-snat
.
Tabel berikut merangkum konfigurasi penyamaran IP untuk cluster GKE Standard:
Konfigurasi cluster | Menghasilkan perilaku SNAT |
---|---|
DaemonSet |
GKE akan mempertahankan alamat IP Pod sumber untuk paket yang dikirim ke tujuan yang ditentukan dalam daftar GKE akan mengubah alamat IP Pod sumber menjadi alamat IP node sumber untuk paket yang dikirim ke tujuan yang tidak ditentukan dalam daftar |
DaemonSet |
GKE akan mempertahankan alamat IP Pod sumber untuk paket yang dikirim ke kumpulan tujuan non-penyamaran default. GKE akan mengubah alamat IP Pod sumber menjadi alamat IP node sumber untuk paket yang dikirim ke tujuan di luar tujuan non-penyamaran default. |
DaemonSet |
GKE akan mempertahankan alamat IP Pod sumber untuk paket yang dikirim ke kumpulan tujuan non-penyamaran default. GKE akan mengubah alamat IP Pod sumber menjadi alamat IP node sumber untuk paket yang dikirim ke tujuan di luar tujuan non-penyamaran default. |
DaemonSet |
GKE akan mempertahankan alamat IP Pod sumber untuk paket yang dikirim ke semua tujuan. Tinjau Mempertahankan sumber alamat IPv4 Pod ke tujuan internet untuk pertimbangan pemilihan rute penting saat Anda mempertahankan alamat sumber IPv4 Pod dan harus merutekan paket ke internet. |
Penyamaran IP untuk cluster Autopilot
Dalam cluster Autopilot, GKE selalu men-deploy DemonSet ip-masq-agent
. Kecuali untuk paket yang dikirim oleh Pod ke node, Pod, atau rentang Layanan cluster, Anda dapat mengontrol perilaku penyamaran IP menggunakan EgressNATPolicy
. Untuk menggunakan EgressNATPolicy
, cluster Autopilot harus memenuhi kedua persyaratan berikut:
- Cluster harus menggunakan GKE versi 1.23.4-gke.1600 atau yang lebih baru, atau 1.22.7-gke.1500 atau yang lebih baru.
- Cluster harus dibuat dengan GKE Dataplane V2 yang diaktifkan.
Tabel berikut merangkum konfigurasi penyamaran IP untuk cluster GKE Autopilot:
Konfigurasi cluster autopilot | Menghasilkan perilaku SNAT |
---|---|
Cluster ini menyertakan |
GKE akan mempertahankan alamat IP Pod sumber untuk paket yang dikirim ke tujuan yang ditentukan dalam GKE mengubah alamat IP Pod sumber menjadi alamat IP node sumber untuk paket yang dikirim ke tujuan yang tidak ditentukan dalam |
Cluster tidak menyertakan |
|
Contoh konfigurasi
Luaskan bagian berikut untuk melihat contoh penyamaran dan konfigurasi IP berdasarkan jenis cluster.
Referensi konfigurasi lanjutan
Saat ip-masq-agent
di-deploy secara otomatis
Dalam cluster mode Autopilot, GKE selalu men-deploy DaemonSet ip-masq-agent
.
Dalam cluster Standard, GKE men-deploy DaemonSet ip-masq-agent
saat flag --disable-default-snat
belum ditetapkan dan cluster menggunakan salah satu kombinasi konfigurasi berikut:
Cluster tidak menggunakan GKE Dataplane V2, dan penerapan kebijakan jaringan diaktifkan.
Cluster menggunakan rentang alamat IP Pod yang tidak sesuai dalam
10.0.0.0/8
.
Agar DaemonSet ip-masq-agent
efektif, Anda juga harus menentukan daftar nonMasqueradeCIDRs
di ConfigMap ip-masq-agent
. Untuk mengetahui informasi selengkapnya, lihat cara mengonfigurasi agen penyamaran IP.
Saat DaemonSet ip-masq-agent
ada di cluster, GKE akan mengupdate dan merekonsiliasi Pod yang aktif di setiap node cluster.
Tujuan non-penyamaran default
Tujuan non-penyamaran default adalah:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
100.64.0.0/10
192.0.0.0/24
192.0.2.0/24
192.88.99.0/24
198.18.0.0/15
198.51.100.0/24
203.0.113.0/24
240.0.0.0/4
Tujuan non-penyamaran default berlaku untuk cluster dengan konfigurasi berikut:
Cluster Anda memiliki DaemonSet
ip-masq-agent
, tetapi tidak adanonMasqueradeCIDRs
daftar yang ditentukan di ConfigMapip-masq-agent
-nya. Hal ini mencakup kasus saat cluster Anda memiliki DaemonSetip-masq-agent
, tetapi tidak memiliki ConfigMapip-masq-agent
sama sekali.Cluster Anda tidak memiliki DaemonSet
ip-masq-agent
dan flag--disable-default-snat
tidak ditetapkan.
Tujuan non-penyamaran default tidak berlaku untuk cluster dengan konfigurasi berikut:
Cluster Anda memiliki DaemonSet
ip-masq-agent
, dan Anda memiliki daftarnonMasqueradeCIDRs
kustom yang ditentukan dalam ConfigMapip-masq-agent
. DaftarnonMasqueradeCIDRs
kustom selalu mengganti tujuan non-penyamaran default saat cluster memiliki DaemonSetip-masq-agent
.Cluster Anda tidak punya DaemonSet
ip-masq-agent
.dan flag--disable-default-snat
telah ditetapkan. Lihat Efek flag--disable-default-snat
untuk mengetahui detail selengkapnya tentang konfigurasi ini.
Efek flag --disable-default-snat
Flag --disable-default-snat
mengubah perilaku SNAT GKE default sehingga alamat IP Pod sumber dipertahankan untuk paket yang dikirim ke semua tujuan.
GKE menerapkan perilaku SNAT default dengan tidak men-deploy DaemonSet ip-masq-agent
apa pun dalam cluster.
Flag --disable-default-snat
tidak berpengaruh jika cluster menyertakan DaemonSet ip-masq-agent
:
- Karena cluster Autopilot selalu menyertakan DaemonSet
ip-masq-agent
, flag--disable-default-snat
tidak berpengaruh pada cluster Autopilot.
- Untuk cluster Standard: Jika Andamen-deploy DaemonSet
ip-masq-agent
atau jika GKE otomatis men-deploy DaemonSetip-masq-agent
, flag--disable-default-snat
ini tidak memiliki arti bagi cluster, bahkan jika--disable-default-snat
sudah ditetapkan. Saat DaemonSetip-masq-agent
ada dalam cluster, tujuan non-penyamaran akan secara eksplisit ditentukan dalam daftarnonMasqueradeCIDRs
ip-masq-agent
ConfigMap atau dari class tujuan non-penyamaran default saat tidak ada daftarnonMasqueradeCIDRs
yang ditentukan.
Anda dapat menetapkan flag --disable-default-snat
dengan mengupdate cluster setelah dibuat. Asalkan cluster tidak memiliki DaemonSet ip-masq-agent
yang di-deploy, penonaktifan SNAT default akan diterapkan setelah cluster mengganti semua nodenya—terkadang beberapa jam kemudian. Hal ini karena GKE mematuhi periode pemeliharaan yang Anda konfigurasi saat mengganti node dalam cluster. Jika belum mengonfigurasi masa pemeliharaan apa pun, Anda perlu memproses ulang node di cluster secara manual sebelum flag --disable-default-snat
memiliki efek apa pun.
Penyamaran link-local
Rentang 169.254.0.0/16
digunakan untuk alamat IP link-local. Penyamaran link-local mengacu pada perubahan alamat IP Pod sumber menjadi alamat IP node sumber untuk paket yang dikirim ke tujuan 169.254.0.0/16
.
Cluster Autopilot selalu menyimpan alamat IP Pod sumber untuk paket yang dikirim ke tujuan 169.254.0.0/16
.
Secara default, cluster Standard juga mempertahankan alamat IP Pod sumber untuk paket yang dikirim ke tujuan 169.254.0.0/16
.
Anda dapat mengaktifkan penyamaran IP link-local dalam cluster Standard dengan melakukan kedua hal berikut:
- Pastikan parameter
masqLinkLocal
ada dan ditetapkan keTrue
di configMapip-masq-agent
. Jika parametermasqLinkLocal
tidak ada di configMapip-masq-agent
, defaultnya adalahFalse
. Untuk panduan, lihat Memeriksa ConfigMapip-masq-agent
, Membuat ConfigMapip-masq-agent
, dan Mengedit ConfigMapip-masq-agent
yang ada. - Pastikan cluster Anda men-deploy DaemonSet
ip-masq-agent
. Untuk panduan, lihat Memeriksa DaemonSetip-masq-agent
dan Men-deploy DaemonSetip-masq-agent
.
Container dan Pod diagnostik dengan hostNetwork: true
Kecuali jika Anda menentukan alamat IP sumber kustom untuk paket, Pod yang berjalan dengan hostNetwork: true
dan container diagnostik akan mengirim paket dengan sumber yang cocok dengan alamat IP node. Untuk Pod yang berjalan dengan hostNetwork: true
, GKE menetapkan alamat IP node ke Pod. GKE tidak mengelola alamat IP untuk container diagnostik, termasuk container untuk men-debug masalah node menggunakan toolbox.
Cluster Autopilot tidak mendukung pengoperasian Pod dengan spec.hostNetwork: true
. Karena node cluster Autopilot tidak dapat diakses menggunakan SSH, Anda tidak dapat menjalankan container diagnostik pada node tersebut.
Mempertahankan sumber alamat IPv4 Pod ke tujuan internet
Jika konfigurasi penyamaran IP cluster Anda adalah salah satu dari konfigurasi berikut, GKE akan mempertahankan sumber alamat IP Pod untuk paket yang dikirim ke semua tujuan, termasuk tujuan internet:
- Di cluster Standard dengan DaemonSet
ip-masq-agent
, jika Anda telah menetapkannonMasqueradeCIDRs
ke0.0.0.0
di ConfigMapip-masq-agent
. - Di cluster Standard tanpa DaemonSet
ip-masq-agent
, jika Anda telah menetapkan flag--disable-default-snat
.
- Dalam cluster Autopilot, jika Anda mengedit EgressNATPolicy default sehingga
spec.action
adalahNoSNAT
, danspec.destinations
berisiCidr: 0.0.0.0/0
.
Sumber IPv4 Pod adalah alamat IPv4 internal, yang berarti sumber tersebut tidak dapat dirutekan di internet. Oleh karena itu, saat mempertahankan alamat IPv4 Pod sumber untuk paket yang dikirim ke internet, Anda harus menggunakan teknik seperti salah satu dari teknik berikut untuk merutekan paket setelah meninggalkan node cluster:
- Pastikan jaringan VPC Anda memiliki rute default dengan next hop gateway internet default, dan konfigurasi gateway Cloud NAT untuk menyediakan layanan NAT publik ke setidaknya rentang alamat IPv4 sekunder subnet yang digunakan oleh Pod di cluster Anda. Untuk mengetahui detail selengkapnya, lihat interaksi GKE di ringkasan Cloud NAT.
- Konfigurasi jaringan VPC Anda untuk menggunakan rute default kustom yang next hop-nya adalah instance VM atau Network Load Balancer passthrough internal, tempat VM atau backend load balancer telah dikonfigurasi untuk merutekan paket ke internet yang mewakili Pod.
Memulihkan ke perilaku SNAT default
Untuk memulihkan ke perilaku SNAT default saat DaemonSet ip-masq-agent
ada di cluster, hapus ConfigMap ip-masq-agent
terkait. DaemonSet
ip-masq-agent
memulihkan perilaku penyamaran IP default di
node yang dikelolanya.
Untuk memulihkan ke perilaku SNAT default saat DaemonSet ip-masq-agent
tidak ada di cluster, Anda harus mengupgrade node pool
(pastikan --disable-default-snat
tidak ditetapkan di cluster).
Efek kebijakan Egress NAT di cluster Autopilot
Kebijakan Egress NAT GKE memungkinkan Anda mengonfigurasi penyamaran IP pada cluster Autopilot. Anda dapat menggunakan definisi resource kustom (CRD) kebijakan Egress NAT GKE untuk mengubah alamat IP sumber paket yang dikirim dari Pod.
Untuk alasan keamanan atau kehabisan alamat IP, Anda dapat menyamarkan alamat IP dari Pod ke rentang alamat IP Node untuk traffic keluar ke jaringan lokal. Misalnya, Anda dapat menggunakan rentang non-RFC-1918 untuk cluster Autopilot dan menggunakan rentang RFC-1918 untuk node. Namun, jika Pod harus berkomunikasi dengan jaringan lokal yang juga menggunakan rentang non-RFC-1918, alamat IP dapat tumpang-tindih. Untuk menghindari kehilangan traffic, Anda dapat mengonfigurasi Kebijakan Egress NAT agar tidak mengiklankan rentang non-RFC-1918 Pod ke jaringan lokal. Kebijakan Egress NAT akan menyamarkan rentang non RFC-1918 Pod untuk menggunakan rentang RFC-1918 Node. Pastikan rentang Node tidak tumpang tindih dengan rentang lokal mana pun atau hal ini dapat menyebabkan loop traffic.
GKE menerapkan perilaku penyamaran IP untuk cluster Autopilot melalui proses berikut:
- GKE men-deploy pengontrol Egress NAT dan
ip-masq-agent
. - Anda membuat kebijakan Egress NAT.
- Pengontrol GKE menafsirkan kebijakan menjadi ConfigMap
ip-masq-agent
. - DaemonSet
ip-masq-agent
membaca ConfigMap, lalu GKE menerapkan perilaku penyamaran IP.
Kebijakan yang dibuat secara otomatis
GKE mendukung dua kebijakan Egress NAT yang dibuat secara otomatis berikut:
- Default: Kebijakan ini dapat diedit.
- Dikelola oleh GKE: Kebijakan ini bersifat permanen dan tidak dapat diedit.
Kebijakan default
GKE menentukan terlebih dahulu kumpulan rentang alamat IP default. Saat paket dikirim ke tujuan tersebut, cluster Anda tidak menyamarkan sumber alamat IP dan mempertahankan alamat IP Pod sumber. Untuk mengubah rentang alamat IP default ini, baca Mengedit dan men-deploy kebijakan Egress NAT.
Manifes berikut menjelaskan kebijakan Egress NAT default:
Name: default
Namespace:
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1
Kind: EgressNATPolicy
Metadata:
Creation Timestamp: 2022-03-16T21:05:45Z
Generation: 2
Managed Fields:
API Version: networking.gke.io/v1
Fields Type: FieldsV1
fieldsV1:
f:spec:
.:
f:action:
f:status:
Manager: egress-nat-controller
Operation: Update
Time: 2022-03-16T21:05:45Z
API Version: networking.gke.io/v1
Fields Type: FieldsV1
fieldsV1:
f:spec:
f:destinations:
Manager: kubectl
Operation: Update
Time: 2022-03-17T01:58:13Z
Resource Version: 189346
UID: 06acbb5a-23ba-4c2a-bb34-9b6ed8c4a87f
Spec:
Action: NoSNAT
Destinations:
Cidr: 10.0.0.0/8
Cidr: 172.16.0.0/12
Cidr: 192.168.0.0/16
Cidr: 240.0.0.0/4
Cidr: 192.0.2.0/24
Cidr: 198.51.100.0/24
Cidr: 203.0.113.0/24
Cidr: 100.64.0.0/10
Cidr: 198.18.0.0/15
Cidr: 192.0.0.0/24
Cidr: 192.88.99.0/24
Status:
Events: <none>
Rentang CIDR sama dengan rentang tujuan non-penyamaran default.
Kebijakan Dikelola oleh GKE
Kebijakan Egress NAT GKE mereservasi rentang alamat IP statis yang diperlukan untuk mempertahankan operasi cluster. Rentang statis ini berisi rentang alamat IP Pod, Layanan, dan Node dari cluster, dan mungkin tumpang tindih dengan kebijakan default.
Anda dapat mengidentifikasi kebijakan ini dengan hash 8 byte dinamis (gke-{CLUSTER_SHORT_HASH}
) yang ditetapkan GKE. Anda tidak dapat mengedit kebijakan ini.
Manifes berikut menjelaskan kebijakan yang dikelola oleh GKE bernama gke-bbfa6c0e-1
:
Name: gke-bbfa6c0e-1
Namespace:
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1
Kind: EgressNATPolicy
Metadata:
Creation Timestamp: 2022-03-16T21:05:46Z
Generation: 1
Managed Fields:
API Version: networking.gke.io/v1
Fields Type: FieldsV1
fieldsV1:
f:spec:
.:
f:action:
f:destinations:
f:status:
Manager: egress-nat-controller
Operation: Update
Time: 2022-03-16T21:05:46Z
Resource Version: 11699
UID: 0201b5de-a6f6-4926-822b-31ed7cdee2c6
Spec:
Action: NoSNAT
Destinations:
Cidr: 10.119.128.0/17
Cidr: 10.120.0.0/22
Cidr: 10.128.0.0/20
Status:
Events: <none>
Langkah selanjutnya
- Pelajari cara menggunakan Kebijakan NAT Keluar untuk mengonfigurasi penyamaran IP di cluster Autopilot.
- Pelajari cara mengonfigurasi agen penyamaran IP di cluster Standard.
- Baca ringkasan jaringan GKE.
- Pelajari cara mengonfigurasi jaringan yang diizinkan.