Panduan ini menunjukkan cara menyiapkan visibilitas intranode di cluster Google Kubernetes Engine (GKE).
Visibilitas intranode mengonfigurasi jaringan pada setiap node dalam cluster sehingga traffic yang dikirim dari satu Pod ke Pod lain diproses oleh jaringan Virtual Private Cloud (VPC) cluster, meskipun Pod berada di node yang sama.
Visibilitas intranode dinonaktifkan secara default pada cluster Standar dan diaktifkan secara default di cluster Autopilot.
Arsitektur
Visibilitas intranode memastikan bahwa paket yang dikirim di antara Pod selalu diproses oleh jaringan VPC, yang memastikan bahwa aturan firewall, rute, log aliran, dan konfigurasi pencerminan paket berlaku untuk paket tersebut.
Saat Pod mengirim paket ke Pod lain pada node yang sama, paket tersebut akan meninggalkan node dan diproses oleh jaringan Google Cloud. Kemudian, paket tersebut akan segera dikirim kembali ke node yang sama dan diteruskan ke Pod tujuan.
Visibilitas intranode men-deploy DaemonSet netd
.
Manfaat
Visibilitas intranode memberikan manfaat berikut:
- Melihat log alur untuk semua traffic antar-Pod, termasuk traffic antar-Pod di node yang sama.
- Buat aturan firewall yang berlaku untuk semua traffic di antara Pod, termasuk traffic antar-Pod di node yang sama.
- Gunakan Duplikasi Paket untuk meng-clone traffic, termasuk traffic antar-Pod di node yang sama, dan meneruskannya untuk diperiksa.
Persyaratan dan batasan
Visibilitas intranode memiliki persyaratan dan batasan berikut:
- Cluster Anda harus menggunakan GKE versi 1.15 atau yang lebih baru.
- Visibilitas intranode tidak didukung dengan kumpulan node Windows Server.
- Jika Anda mengaktifkan visibilitas intranode, dan menggunakan
ip-masq-agent
yang dikonfigurasi dengan parameternonMasqueradeCIDRs
, Anda harus menyertakan rentang CIDR Pod dinonMasqueradeCIDRs
untuk menghindari masalah konektivitas intranode.
Aturan firewall
Jika Anda mengaktifkan visibilitas intranode, jaringan VPC akan memproses semua paket yang dikirim antar-Pod, termasuk paket yang dikirim antar-Pod pada node yang sama. Artinya, aturan firewall VPC dan kebijakan firewall hierarkis akan secara konsisten berlaku pada komunikasi Pod-ke-Pod, terlepas dari lokasi Pod.
Jika Anda mengonfigurasi aturan firewall kustom untuk komunikasi dalam cluster, evaluasi dengan cermat kebutuhan jaringan cluster Anda untuk menentukan kumpulan aturan traffic egress dan ingress. Anda dapat menggunakan uji konektivitas untuk memastikan bahwa traffic yang sah tidak terkendala. Misalnya, komunikasi Pod-to-Pod diperlukan agar kebijakan jaringan dapat berfungsi.
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
.
Mengaktifkan visibilitas intranode di cluster baru
Anda dapat membuat cluster dengan visibilitas intranode yang diaktifkan menggunakan gcloud CLI atau Google Cloud Console.
gcloud
Untuk membuat cluster node tunggal dengan visibilitas intranode aktif,
gunakan flag --enable-intra-node-visibility
:
gcloud container clusters create CLUSTER_NAME \
--region=COMPUTE_REGION \
--enable-intra-node-visibility
Ganti kode berikut:
CLUSTER_NAME
: nama cluster baru.COMPUTE_REGION
: region komputasi untuk cluster.
Konsol
Untuk membuat cluster node tunggal dengan visibilitas intranode aktif, lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Klik add_box Create .
Masukkan Nama untuk cluster Anda.
Dalam dialog Configure cluster, di samping GKE Standard, klik Configure.
Konfigurasi cluster Anda sesuai kebutuhan.
Dari panel navigasi, pada Cluster, klik Networking.
Centang kotak Aktifkan visibilitas intranode.
Klik Create.
Mengaktifkan visibilitas intranode di cluster yang ada
Anda dapat mengaktifkan visibilitas intranode pada cluster yang sudah ada menggunakan gcloud CLI atau Google Cloud Console.
Jika Anda mengaktifkan visibilitas intranode untuk cluster yang ada, GKE akan memulai ulang komponen di bidang kontrol dan node pekerja.
gcloud
Untuk mengaktifkan visibilitas intranode pada cluster yang sudah ada, gunakan
flag --enable-intra-node-visibility
:
gcloud container clusters update CLUSTER_NAME \
--enable-intra-node-visibility
Ganti CLUSTER_NAME
dengan nama cluster Anda.
Konsol
Untuk mengaktifkan visibilitas intranode pada cluster yang ada, lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Di daftar cluster, klik nama cluster yang ingin diubah.
Di bagian Networking, klik edit Edit visibilitas intranode.
Centang kotak Aktifkan visibilitas intranode.
Klik Simpan Perubahan.
Perubahan ini memerlukan pembuatan ulang node, yang dapat menyebabkan gangguan pada workload yang sedang berjalan. Untuk mengetahui detail tentang perubahan khusus ini, temukan baris yang sesuai dalam tabel perubahan manual yang membuat ulang node menggunakan strategi upgrade node dan mematuhi kebijakan pemeliharaan. Untuk mempelajari update node lebih lanjut, lihat Merencanakan gangguan update node.
Menonaktifkan visibilitas intranode
Anda dapat menonaktifkan visibilitas intranode di cluster menggunakan gcloud CLI atau Google Cloud Console.
Saat Anda menonaktifkan visibilitas intranode untuk cluster yang ada, GKE akan memulai ulang komponen di bidang kontrol dan node pekerja.
gcloud
Untuk menonaktifkan visibilitas intranode, gunakan flag --no-enable-intra-node-visibility
:
gcloud container clusters update CLUSTER_NAME \
--no-enable-intra-node-visibility
Ganti CLUSTER_NAME
dengan nama cluster Anda.
Konsol
Untuk menonaktifkan visibilitas intranode, lakukan langkah-langkah berikut:
Buka halaman Google Kubernetes Engine di Konsol Google Cloud.
Di daftar cluster, klik nama cluster yang ingin diubah.
Di bagian Networking, klik edit Edit visibilitas intranode.
Hapus centang Aktifkan visibilitas intranode.
Klik Simpan Perubahan.
Perubahan ini memerlukan pembuatan ulang node, yang dapat menyebabkan gangguan pada workload yang sedang berjalan. Untuk mengetahui detail tentang perubahan spesifik ini, temukan baris yang sesuai dalam tabel perubahan manual yang membuat ulang node menggunakan strategi upgrade node dan mematuhi kebijakan pemeliharaan. Untuk mempelajari update node lebih lanjut, lihat Merencanakan gangguan update node.
Latihan: Memverifikasi visibilitas intranode
Latihan ini menunjukkan langkah-langkah yang diperlukan untuk mengaktifkan visibilitas intranode dan mengonfirmasi bahwa node berfungsi untuk cluster Anda.
Dalam latihan ini, Anda melakukan langkah-langkah berikut:
- Aktifkan log alur untuk subnet default di region
us-central1
. - Buat cluster node tunggal dengan visibilitas intranode diaktifkan di
zona
us-central1-a
. - Buat dua Pod di cluster Anda.
- Mengirim permintaan HTTP dari satu Pod ke Pod lainnya.
- Melihat entri log alur untuk permintaan Pod ke Pod.
Aktifkan log alur
Aktifkan log alur untuk subnet default:
gcloud compute networks subnets update default \ --region=us-central1 \ --enable-flow-logs
Pastikan subnet default telah mengaktifkan log alur:
gcloud compute networks subnets describe default \ --region=us-central1
Output menunjukkan bahwa log alur diaktifkan, mirip dengan berikut ini:
... enableFlowLogs: true ...
Membuat cluster
Buat satu cluster node dengan visibilitas intranode diaktifkan:
gcloud container clusters create flow-log-test \ --zone=us-central1-a \ --num-nodes=1 \ --enable-intra-node-visibility
Dapatkan kredensial untuk cluster Anda:
gcloud container clusters get-credentials flow-log-test \ --zone=us-central1-a
Membuat dua Pod
Membuat ruang
Simpan manifes berikut ke file bernama
pod-1.yaml
:apiVersion: v1 kind: Pod metadata: name: pod-1 spec: containers: - name: container-1 image: google/cloud-sdk:slim command: - sh - -c - while true; do sleep 30; done
Terapkan manifes ke cluster Anda:
kubectl apply -f pod-1.yaml
Buat Pod kedua.
Simpan manifes berikut ke file bernama
pod-2.yaml
:apiVersion: v1 kind: Pod metadata: name: pod-2 spec: containers: - name: container-2 image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:2.0
Terapkan manifes ke cluster Anda:
kubectl apply -f pod-2.yaml
Melihat Pod:
kubectl get pod pod-1 pod-2 --output wide
Output menunjukkan alamat IP Pod Anda, mirip dengan berikut ini:
NAME READY STATUS RESTARTS AGE IP ... pod-1 1/1 Running 0 1d 10.52.0.13 ... pod-2 1/1 Running 0 1d 10.52.0.14 ...
Catat alamat IP
pod-1
danpod-2
.
Mengirim permintaan
Dapatkan shell ke container di
pod-1
:kubectl exec -it pod-1 -- sh
Di shell Anda, kirim permintaan ke
pod-2
:curl -s POD_2_IP_ADDRESS:8080
Ganti
POD_2_IP_ADDRESS
dengan alamat IPpod-2
.Output menampilkan respons dari container yang berjalan di
pod-2
.Hello, world! Version: 2.0.0 Hostname: pod-2
Ketik exit untuk meninggalkan shell dan kembali ke lingkungan command line utama Anda.
Melihat entri log alur
Untuk melihat entri log alur, gunakan perintah berikut:
gcloud logging read \
'logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fvpc_flows" AND jsonPayload.connection.src_ip="POD_1_IP_ADDRESS" AND jsonPayload.connection.dest_ip="POD_2_IP_ADDRESS"'
Ganti kode berikut:
PROJECT_ID
: project ID Anda.POD_1_IP_ADDRESS
: alamat IPpod-1
.POD_2_IP_ADDRESS
: alamat IPpod-2
.
Output menampilkan entri log alur untuk permintaan dari pod-1
ke pod-2
. Dalam contoh ini, pod-1
memiliki alamat IP 10.56.0.13
, dan pod-2
memiliki alamat IP 10.56.0.14
.
...
jsonPayload:
bytes_sent: '0'
connection:
dest_ip: 10.56.0.14
dest_port: 8080
protocol: 6
src_ip: 10.56.0.13
src_port: 35414
...
Pembersihan
Untuk menghindari timbulnya tagihan yang tidak diinginkan pada akun Anda, lakukan langkah-langkah berikut untuk menghapus resource yang Anda buat:
Hapus kluster:
gcloud container clusters delete -q flow-log-test
Nonaktifkan log alur untuk subnet default:
gcloud compute networks subnets update default --no-enable-flow-logs
Langkah selanjutnya
- Pelajari cara mengontrol komunikasi antara Pod dan Layanan cluster dengan membuat kebijakan jaringan cluster.
- Pelajari manfaat cluster native VPC.