Halaman ini berisi penjelasan tentang cara mengonfigurasi cluster yang dibuat dalam mode Standard Google Kubernetes Engine (GKE)
untuk melakukan penyamaran IP
dengan ip-masq-agent
. Untuk informasi selengkapnya tentang penyamaran IP dalam
mode Autopilot GKE,
lihat Menggunakan kebijakan NAT Keluar untuk mengonfigurasi penyamaran IP di cluster Autopilot.
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
initialize
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Memeriksa status ip-masq-agent
Bagian ini menunjukkan cara:
- Menentukan apakah cluster Anda memiliki DaemonSet
ip-masq-agent
. - Memeriksa resource
ConfigMap
ip-masq-agent
.
Memeriksa DaemonSet ip-masq-agent
Untuk memeriksa apakah cluster Anda menjalankan DaemonSet ip-masq-agent
, gunakan
Google Cloud CLI atau Konsol Google Cloud.
gcloud
Dapatkan kredensial untuk cluster Anda:
gcloud container clusters get-credentials CLUSTER_NAME
Ganti
CLUSTER_NAME
dengan nama cluster Anda.Telusuri
ip-masq-agent
di namespacekube-system
:kubectl get daemonsets/ip-masq-agent -n kube-system
Jika DaemonSet
ip-masq-agent
ada, output-nya akan mirip dengan yang berikut ini:NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE ip-masq-agent 3 3 3 3 3 <none> 13d
Jika DaemonSet
ip-masq-agent
tidak ada, output-nya akan mirip dengan yang berikut ini:Error from server (NotFound): daemonsets.apps "ip-masq-agent" not found
Konsol
Buka halaman Workloads di Konsol Google Cloud.
Untuk Filter
, lakukan langkah berikut:- Klik untuk menghapus filter Is system object: False.
- Filter properti berikut:
- Name:
ip-masq-agent
. - Cluster: nama cluster Anda.
- Name:
Jika DaemonSet
ip-masq-agent
ada, Anda dapat melihat data DaemonSet dalam tabel. Jikaip-masq-agent
DaemonSet tidak ada, tidak akan ada baris yang ditampilkan.
Untuk membuat ConfigMap ip-masq-agent
dan men-deploy DaemonSet ip-masq-agent
,
lihat Mengonfigurasi dan men-deploy ip-masq-agent
.
Memeriksa ConfigMap ip-masq-agent
Untuk memeriksa apakah cluster Anda menjalankan ConfigMap ip-masq-agent
, gunakan
Google Cloud CLI atau Konsol Google Cloud.
gcloud
Dapatkan kredensial untuk cluster Anda:
gcloud container clusters get-credentials CLUSTER_NAME
Ganti
CLUSTER_NAME
dengan nama cluster Anda.Tentukan ConfigMap
ip-masq-agent
dalam namespacekube-system
:kubectl describe configmaps/ip-masq-agent -n kube-system
Jika ConfigMap
ip-masq-agent
ada, output-nya akan mirip dengan yang berikut ini:Name: ip-masq-agent Namespace: kube-system Labels: <none> Annotations: <none> Data ==== config: ---- nonMasqueradeCIDRs: - 198.15.5.92/24 - 10.0.0.0/8 masqLinkLocal: false resyncInterval: 60s BinaryData ==== Events: <none>
Jika ConfigMap
ip-masq-agent
tidak ada, output-nya akan mirip dengan yang berikut ini:Error from server (NotFound): configmaps "ip-masq-agent" not found
Konsol
Buka halaman Configuration di Konsol Google Cloud.
Untuk Filter
, lakukan langkah berikut:- Klik untuk menghapus filter Is system object: False.
- Filter properti berikut:
- Name:
ip-masq-agent
. - Cluster: nama cluster Anda.
- Name:
Jika
ip-masq-agent
ConfigMap ada, Anda dapat melihat data ConfigMap dalam tabel. Jika ConfigMapip-masq-agent
tidak ada, tidak akan ada baris yang ditampilkan.
Jika cluster sudah memiliki ConfigMap ip-masq-agent
, Anda dapat mengonfigurasi dan
men-deploy-nya.
Mengonfigurasi dan men-deploy ip-masq-agent
Bagian ini menunjukkan cara membuat atau mengedit ConfigMap ip-masq-agent
serta cara men-deploy atau menghapus DaemonSet ip-masq-agent
. Untuk
menentukan tugas mana yang perlu dilakukan, Anda harus terlebih dahulu menentukan apakah
cluster sudah memiliki ConfigMap ip-masq-agent
dan
DaemonSet ip-masq-agent
.
Membuat ConfigMap ip-masq-agent
Langkah-langkah berikut menunjukkan cara membuat ConfigMap ip-masq-agent
. Jika
cluster Anda sudah memiliki ConfigMap ip-masq-agent
, edit ConfigMap ip-masq-agent
yang ada.
Buat file konfigurasi menggunakan template berikut dan simpan secara lokal. Anda dapat menggunakan nama apa pun untuk salinan lokal file konfigurasi ini.
nonMasqueradeCIDRs: - CIDR_1 - CIDR_2 masqLinkLocal: false resyncInterval: SYNC_INTERVALUNIT_OF_TIME
Ganti kode berikut:
CIDR_1
danCIDR_2
: rentang alamat IP dalam format CIDR. Saat paket dikirim ke tujuan tersebut, cluster Anda tidak akan menyamarkan sumber alamat IP dan akan mempertahankan alamat IP Pod sumber. Jika memerlukan lebih dari dua CIDR, tambahkan entri lainnya ke daftarnonMasqueradeCIDRs
dengan mengikuti format yang sama. PropertinonMasqueradeCIDRs
minimal harus menyertakan rentang alamat IP node dan Pod cluster Anda.SYNC_INTERVAL
: lamanya waktu setelah setiap Podip-masq-agent
memeriksa konten ConfigMapip-masq-agent
dan menulis setiap perubahan ke file/etc/config/ip-masq-agent
lokalnya. Setelan defaultnya adalah60
.UNIT_OF_TIME
: unit waktu untuk resyncInterval. Nilai yang valid adalahs
(untuk detik) ataums
(untuk milidetik). Setelan default-nya adalahs
.
Setel
masqLinkLocal
ke salah (false) (default), kecuali jika Anda perlu mengaktifkan penyamaran paket yang dikirim ke alamat IPv4 link-local. Untuk mengetahui informasi selengkapnya, lihat Penyamaran ke tujuan link-local.Buat resource ConfigMap:
kubectl create configmap ip-masq-agent \ --namespace=kube-system \ --from-file=config=LOCAL_CONFIG_FILE_PATH
Ganti
LOCAL_CONFIG_FILE_PATH
dengan jalur ke file konfigurasi yang Anda buat di langkah sebelumnya.Tentukan ConfigMap
ip-masq-agent
dalam namespacekube-system
:kubectl describe configmaps/ip-masq-agent -n kube-system
Outputnya mirip dengan yang berikut ini:
Name: ip-masq-agent Namespace: kube-system Labels: <none> Annotations: <none> Data ==== config: ---- nonMasqueradeCIDRs: - 198.15.5.92/24 - 10.0.0.0/8 masqLinkLocal: false resyncInterval: 60s BinaryData ==== Events: <none>
Output ini mencakup parameter
config
dengan perubahan konfigurasi Anda. Sekarang Anda dapat men-deploy DeamonSetip-masq-agent
.
Mengedit ConfigMap ip-masq-agent
yang ada
Anda dapat mengubah konten ConfigMap ip-masq-agent
yang ada dengan
menyelesaikan langkah-langkah berikut:
Buka ConfigMap di editor teks:
kubectl edit configmap ip-masq-agent --namespace=kube-system
Edit konten file ConfigMap:
apiVersion: v1 data: config: | nonMasqueradeCIDRs: - CIDR_1 - CIDR_2 masqLinkLocal: false resyncInterval: SYNC_INTERVALUNIT_OF_TIME kind: ConfigMap metadata: name: ip-masq-agent namespace: kube-system
Ganti kode berikut:
CIDR_1
danCIDR_2
: rentang alamat IP dalam format CIDR. Saat paket dikirim ke tujuan tersebut, cluster Anda tidak akan menyamarkan sumber alamat IP dan akan mempertahankan alamat IP Pod sumber. Jika Anda memerlukan lebih dari dua CIDR, tambahkan entri lainnya ke daftarnonMasqueradeCIDRs
dengan mengikuti format yang sama. PropertinonMasqueradeCIDRs
minimal harus menyertakan rentang alamat IP node dan Pod cluster Anda.SYNC_INTERVAL
: lamanya waktu setelah setiap Podip-masq-agent
memeriksa konten ConfigMapip-masq-agent
dan menulis setiap perubahan ke file/etc/config/ip-masq-agent
lokalnya. Setelan defaultnya adalah60
.UNIT_OF_TIME
: unit waktu untuk resyncInterval. Nilai yang valid adalahs
(untuk detik) ataums
(untuk milidetik). Setelan default-nya adalahs
.
Setel
masqLinkLocal
ke salah (false) (default), kecuali jika Anda perlu mengaktifkan penyamaran paket yang dikirim ke alamat IPv4 link-local. Untuk mengetahui informasi selengkapnya, lihat Penyamaran ke tujuan link-local.Tentukan ConfigMap
ip-masq-agent
dalam namespacekube-system
:kubectl describe configmaps/ip-masq-agent -n kube-system
Outputnya mirip dengan hal berikut ini:
Name: ip-masq-agent Namespace: kube-system Labels: <none> Annotations: <none> Data ==== config: ---- nonMasqueradeCIDRs: - 198.15.5.92/24 - 10.0.0.0/8 masqLinkLocal: false resyncInterval: 60s BinaryData ==== Events: <none>
Output ini mencakup parameter
config
yang cocok dengan nilai konfigurasi dari file yang Anda buat.
Men-deploy DaemonSet ip-masq-agent
Setelah membuat atau mengedit ConfigMap ip-masq-agent
, deploy
DaemonSet ip-masq-agent
.
Simpan manifes berikut sebagai file YAML:
apiVersion: apps/v1 kind: DaemonSet metadata: name: ip-masq-agent namespace: kube-system spec: selector: matchLabels: k8s-app: ip-masq-agent template: metadata: labels: k8s-app: ip-masq-agent spec: hostNetwork: true containers: - name: ip-masq-agent image: gke.gcr.io/ip-masq-agent:v2.9.3-gke.5@sha256:c75a164d6011c7da7084da0fddfc7419914025e092741c3c230cec1589a1a06b args: # The masq-chain must be IP-MASQ - --masq-chain=IP-MASQ # To non-masquerade reserved IP ranges by default, # uncomment the following line. # - --nomasq-all-reserved-ranges securityContext: privileged: true volumeMounts: - name: config-volume mountPath: /etc/config volumes: - name: config-volume configMap: name: ip-masq-agent optional: true items: - key: config path: ip-masq-agent tolerations: - effect: NoSchedule operator: Exists - effect: NoExecute operator: Exists - key: "CriticalAddonsOnly" operator: "Exists"
Manifes ini membuat volume bernama
config-volume
yang dipasang sebagaimana ditentukan oleh volumeMount container.Jika Anda perlu mengedit manifes ini, pertimbangkan kondisi berikut:
Nama volume dapat berupa apa saja, tetapi harus sama dengan nama
volumeMount
container.Nama ConfigMap harus sama dengan nama
configMap
yang disebutkan di Volumeconfig-volume
di Pod.Nama rantai (
--masq-chain
) harusIP-MASQ
. Jika tidak, GKE tidak akan mengganti aturan penyamaran default.Pod DaemonSet membaca dari file
ip-masq-agent
. Konten fileip-masq-agent
adalah nilai kunciconfig
di ConfigMap.Jika Anda menggunakan rentang IP yang dicadangkan dan tidak disamarkan secara default, hapus tanda komentar pada baris
- --nomasq-all-reserved-ranges
di bagianarg
.
Deploy DaemonSet:
kubectl apply -f LOCAL_FILE_PATH
Ganti
LOCAL_FILE_PATH
dengan jalur ke file yang Anda buat di langkah sebelumnya.
Anda dapat secara manual mengupdate DaemonSet ip-masq-agent
yang telah dibuat. Untuk mempelajari lebih lanjut, lihat
Mengupdate DaemonSet.
Menghapus ip-masq-agent
Bagian ini menunjukkan cara menghapus DaemonSet ip-masq-agent
dan
ConfigMap ip-masq-agent
.
Menghapus DaemonSet ip-masq-agent
Jika membuat DaemonSet ip-masq-agent
secara manual, Anda dapat menghapusnya dengan
menjalankan perintah berikut:
kubectl delete daemonsets ip-masq-agent -n kube-system
Menghapus ConfigMap ip-masq-agent
Untuk menghapus ConfigMap ip-masq-agent
sepenuhnya, jalankan perintah berikut:
kubectl delete configmap ip-masq-agent -n kube-system
Pemecahan masalah
Langkah berikut memberikan informasi seputar pemecahan masalah:
- Konfirmasi status
ip-masq-agent
. Jika ConfigMap tidak ditentukan, traffic ke semua tujuan default tidak akan disamarkan dan akan mempertahankan alamat IP Pod. Traffic ke tujuan lain akan mempertahankan alamat IP node. - Periksa apakah rantai IP-MASQ terisi dengan benar di tabel IP NAT dengan menjalankan perintah
sudo iptables -t nat -L IP-MASQ
di node yang terkena dampak. JikanonMasqueradeCIDRs
yang ditentukan di ConfigMap tidak muncul di Tabel IP NAT, pastikan tidak ada kesalahan ketik di file konfigurasi yang digunakan untuk membuat ConfigMap. - Pastikan tujuan yang ingin dijangkau Pod telah disertakan dalam
nonMasqueradeCIDRs
di ConfigMap. Jika tujuan tidak ada dinonMasqueradeCIDRs
, traffic akan mempertahankan alamat IP node. - Pastikan bahwa tujuan telah mengizinkan rentang alamat IP node dan Pod.
- Jika traffic tidak dapat diakses dari node atau Pod, jalankan uji konektivitas.
Langkah selanjutnya
- Pelajari IP Alias.
- Baca ringkasan jaringan GKE.
- Pelajari cara mengonfigurasi jaringan yang diizinkan.