Menyiapkan visibilitas intranode


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 parameter nonMasqueradeCIDRs, Anda harus menyertakan rentang CIDR Pod di nonMasqueradeCIDRs 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:

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Klik Create .

  3. Masukkan Nama untuk cluster Anda.

  4. Dalam dialog Configure cluster, di samping GKE Standard, klik Configure.

  5. Konfigurasi cluster Anda sesuai kebutuhan.

  6. Dari panel navigasi, pada Cluster, klik Networking.

  7. Centang kotak Aktifkan visibilitas intranode.

  8. 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:

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Di bagian Networking, klik Edit visibilitas intranode.

  4. Centang kotak Aktifkan visibilitas intranode.

  5. 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:

  1. Buka halaman Google Kubernetes Engine di Konsol Google Cloud.

    Buka Google Kubernetes Engine

  2. Di daftar cluster, klik nama cluster yang ingin diubah.

  3. Di bagian Networking, klik Edit visibilitas intranode.

  4. Hapus centang Aktifkan visibilitas intranode.

  5. 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:

  1. Aktifkan log alur untuk subnet default di region us-central1.
  2. Buat cluster node tunggal dengan visibilitas intranode diaktifkan di zona us-central1-a.
  3. Buat dua Pod di cluster Anda.
  4. Mengirim permintaan HTTP dari satu Pod ke Pod lainnya.
  5. Melihat entri log alur untuk permintaan Pod ke Pod.

Aktifkan log alur

  1. Aktifkan log alur untuk subnet default:

    gcloud compute networks subnets update default \
        --region=us-central1 \
        --enable-flow-logs
    
  2. 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

  1. 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
    
  2. Dapatkan kredensial untuk cluster Anda:

    gcloud container clusters get-credentials flow-log-test \
        --zone=us-central1-a
    

Membuat dua Pod

  1. 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
    
  2. Terapkan manifes ke cluster Anda:

    kubectl apply -f pod-1.yaml
    
  3. 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
    
  4. Terapkan manifes ke cluster Anda:

    kubectl apply -f pod-2.yaml
    
  5. 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 dan pod-2.

Mengirim permintaan

  1. Dapatkan shell ke container di pod-1:

    kubectl exec -it pod-1 -- sh
    
  2. Di shell Anda, kirim permintaan ke pod-2:

    curl -s POD_2_IP_ADDRESS:8080
    

    Ganti POD_2_IP_ADDRESS dengan alamat IP pod-2.

    Output menampilkan respons dari container yang berjalan di pod-2.

    Hello, world!
    Version: 2.0.0
    Hostname: pod-2
    
  3. 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 IP pod-1.
  • POD_2_IP_ADDRESS: alamat IP pod-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:

  1. Hapus kluster:

    gcloud container clusters delete -q flow-log-test
    
  2. Nonaktifkan log alur untuk subnet default:

    gcloud compute networks subnets update default --no-enable-flow-logs
    

Langkah selanjutnya