Menyiapkan dukungan multi-jaringan untuk Pod


Halaman ini menunjukkan cara mengaktifkan beberapa antarmuka pada node dan Pod di cluster Google Kubernetes Engine (GKE) menggunakan dukungan multi-jaringan untuk Pod. Dukungan multi-jaringan hanya tersedia untuk project diaktifkan dengan GKE Enterprise.

Sebelum membaca dokumen ini, pastikan Anda sudah memahami konsep jaringan, terminologi dan konsep khusus untuk fitur ini, serta persyaratan dan batasan untuk dukungan multi-jaringan untuk Pod.

Untuk informasi selengkapnya, lihat Tentang dukungan multi-jaringan untuk Pod.

Persyaratan dan batasan

Dukungan multi-jaringan untuk Pod memiliki persyaratan dan batasan berikut:

Persyaratan

  • GKE versi 1.28 atau yang lebih baru.
  • Mengaktifkan edisi Google Kubernetes Engine (GKE) Enterprise
  • Dukungan multi-jaringan untuk Pod menggunakan spesifikasi level VM yang sama dengan multi-NIC untuk Compute Engine.
  • Dukungan multi-jaringan untuk Pod memerlukan GKE Dataplane V2.
  • Dukungan multi-jaringan untuk Pod hanya tersedia untuk node Container-Optimized OS yang menjalankan versi m101 atau yang lebih baru.

Batasan umum

  • Cluster yang diaktifkan untuk jaringan dual-stack tidak dapat menjalankan dukungan multi-jaringan untuk Pod.
  • VPC Bersama hanya didukung di GKE versi 1.28 atau yang lebih baru.
  • CID Multi-Pod hanya didukung di GKE versi 1.29 atau yang lebih baru, dan hanya untuk jaringan Pod default.
  • Semua jaringan Pod dalam satu cluster GKE tidak boleh memiliki rentang CIDR yang tumpang-tindih.
  • Jika mengaktifkan dukungan multi-jaringan untuk Pod, Anda tidak dapat menambahkan atau menghapus antarmuka jaringan node atau jaringan Pod setelah membuat node pool. Untuk mengubah setelan ini, Anda harus membuat ulang node pool.
  • Secara default, akses internet tidak tersedia di antarmuka tambahan jaringan Pod di dalam Pod. Namun, Anda dapat mengaktifkannya secara manual menggunakan Cloud NAT.
  • Anda tidak dapat mengubah Gateway default di dalam Pod menggunakan beberapa antarmuka melalui API. Gateway default harus terhubung ke jaringan Pod default.
  • Jaringan Pod default harus selalu disertakan dalam Pod meskipun Anda membuat jaringan atau antarmuka Pod tambahan.
  • Anda tidak dapat mengonfigurasi fitur multi-jaringan setelah Managed Hubble dikonfigurasi.
  • Untuk menggunakan VPC Bersama, pastikan bahwa cluster GKE yang menjalankan versi 1.28.4 atau yang lebih baru.
  • Untuk deployment VPC Bersama, semua antarmuka jaringan (NIC) terpasang ke node harus berasal dari project yang sama dengan project host.
  • Nama objek jaringan yang diketik di perangkat tidak boleh melebihi 41 karakter. Jalur lengkap setiap soket domain UNIX disusun, termasuk nama jaringan yang sesuai. Linux memiliki keterbatasan panjang jalur soket (di bawah 107 byte). Setelah memperhitungkan direktori, awalan nama file, dan ekstensi .sock, nama jaringan dibatasi maksimum 41 karakter.

Batasan Perangkat dan Data Plane Development Kit (DPDK)

  • NIC VM yang diteruskan ke Pod sebagai NIC jenis Device tidak tersedia untuk Pod lain di node yang sama.
  • Pod yang menggunakan mode DPDK harus dijalankan dalam mode dengan hak istimewa agar dapat mengakses perangkat VFIO.
  • Dalam mode DPDK, perangkat diperlakukan sebagai resource node dan hanya terpasang ke container pertama (non-init) dalam Pod. Jika ingin membagi beberapa perangkat DPDK di antara beberapa container di Pod yang sama, Anda harus menjalankan container tersebut di Pod terpisah.

Batasan penskalaan

GKE menyediakan arsitektur jaringan fleksibel yang memungkinkan Anda menskalakan cluster Anda. Anda dapat menambahkan jaringan node dan jaringan Pod tambahan ke cluster. Anda dapat menskalakan cluster sebagai berikut:

  • Anda dapat menambahkan hingga 7 jaringan node tambahan ke setiap node pool GKE. Batas skala ini juga berlaku untuk VM Compute Engine.
  • Setiap pod harus memiliki kurang dari 7 jaringan tambahan yang terpasang.
  • Anda dapat mengonfigurasi hingga 35 jaringan Pod di 8 jaringan node dalam satu node pool. Anda dapat memecahnya menjadi berbagai kombinasi, seperti:
    • 7 jaringan node dengan masing-masing 5 jaringan Pod
    • 5 jaringan node dengan masing-masing 7 jaringan Pod
    • 1 jaringan node dengan 30 jaringan Pod. Batas untuk rentang sekunder per subnet adalah 30.
  • Anda dapat mengonfigurasi hingga 50 jaringan Pod per cluster.
  • Anda dapat mengonfigurasi hingga maksimum 32 Pod multi-jaringan per node.
  • Anda dapat memiliki hingga 5.000 node dengan beberapa antarmuka.
  • Anda dapat memiliki hingga 100.000 antarmuka tambahan di semua Pod.

Harga

Fitur Network Function Optimizer (NFO) berikut hanya didukung pada yang berada di Project yang diaktifkan dengan GKE Enterprise:

Untuk memahami biaya yang berlaku untuk mengaktifkan edisi Google Kubernetes Engine (GKE) Enterprise, lihat Harga GKE Enterprise.

Men-deploy Pod multi-jaringan

Untuk men-deploy Pod multi-jaringan, lakukan hal berikut:

  1. Menyiapkan VPC tambahan, subnet (jaringan node), dan rentang sekunder (jaringan Pod).
  2. Membuat cluster GKE dengan multi-jaringan menggunakan perintah Google Cloud CLI.
  3. Membuat node pool GKE baru yang terhubung ke jaringan node dan jaringan Pod tambahan menggunakan perintah Google Cloud CLI.
  4. Buat jaringan Pod dan referensikan VPC, subnet, dan rentang sekunder yang benar di multi-jaringan menggunakan Kubernetes API.
  5. Di konfigurasi workload Anda, referensikan objek Kubernetes Jaringan yang sudah disiapkan menggunakan Kubernetes API.

Sebelum memulai

Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Mengaktifkan 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.

Menyiapkan VPC tambahan

Google Cloud membuat jaringan Pod default selama pembuatan cluster dengan node pool GKE yang digunakan selama pembuatan awal cluster GKE. Jaringan Pod default tersedia di semua cluster untuk node dan Pod. Untuk memfasilitasi kemampuan multi-jaringan dalam kumpulan node, Anda harus menyiapkan VPC yang sudah ada atau baru, yang mendukung Layer 3 dan jaringan jenis Device.

Untuk menyiapkan VPC tambahan, pertimbangkan hal-hal berikut persyaratan:

  • Jaringan jenis Layer 3 dan Netdevice:

    • Buat rentang sekunder jika Anda menggunakan jaringan jenis Layer 3.
    • Pastikan ukuran CIDR untuk rentang sekunder cukup besar untuk memenuhi jumlah node dalam kumpulan node dan jumlah Pod per node yang ingin Anda miliki.
    • Seperti halnya jaringan Pod default, jaringan Pod lainnya menggunakan IP untuk mengatasi penyediaan resource yang berlebihan. Rentang alamat IP sekunder harus memiliki dua kali sebanyak jumlah alamat IP per node, dan jumlah Pod per node.
  • Persyaratan jaringan jenis Device: Buat subnet reguler di Jaringan VPC. Anda tidak memerlukan subnet sekunder.

Untuk mengaktifkan kemampuan multi-jaringan di node pool, Anda harus mempersiapkan VPC tempat Anda ingin membuat koneksi tambahan. Anda Anda dapat menggunakan VPC yang sudah ada atau Buat VPC khusus untuk kumpulan node.

Membuat jaringan VPC yang mendukung perangkat jenis Layer 3

Untuk membuat jaringan VPC yang mendukung perangkat jenis Layer 3, lakukan hal berikut:

  • Pastikan ukuran CIDR untuk rentang sekunder cukup besar untuk memenuhi jumlah node dalam kumpulan node, dan jumlah Pod per node mereka miliki.
  • Mirip dengan jaringan Pod default, jaringan Pod lainnya menggunakan alamat IP penyediaan resource yang berlebihan. Rentang alamat IP sekunder harus memiliki IP 2 kali lebih banyak alamat per node sebagai jumlah Pod per node.

gcloud

gcloud compute networks subnets create SUBNET_NAME \
    --project=PROJECT_ID \
    --range=SUBNET_RANGE \
    --network=NETWORK_NAME \
    --region=REGION \
    --secondary-range=SECONDARY_RANGE_NAME=<SECONDARY_RANGE_RANGE>

Ganti kode berikut:

  • SUBNET_NAME: nama subnet.
  • PROJECT_ID: ID project yang berisi jaringan VPC tempat subnet dibuat.
  • SUBNET_RANGE: rentang alamat IPv4 utama untuk subnet baru, dalam notasi CIDR.
  • NETWORK_NAME: nama jaringan VPC yang berisi subnet baru.
  • REGION: region Google Cloud tempat subnet baru dibuat.
  • SECONDARY_RANGE_NAME: nama untuk rentang sekunder.
  • SECONDARY_IP_RANGE rentang alamat IPv4 sekunder dalam notasi CIDR.

Konsol

  1. Di konsol Google Cloud, buka halaman jaringan VPC.

  2. Klik Create VPC network.

  3. Di kolom Nama, masukkan nama jaringan. Contoh, l3-vpc.

  4. Dari drop-down Maximum transmisi unit (MTU), pilih nilai MTU yang sesuai.

  5. Pada bagian Subnet creation mode, pilih Custom.

  6. Klik ADD SUBNET.

  7. Di bagian New subnet tentukan parameter konfigurasi berikut untuk subnet:

    1. Berikan Nama. Contoh, l3-subnet.

    2. Pilih Region.

    3. Masukkan IP address range. Ini adalah rentang IPv4 utama untuk subnet.

      Jika Anda memilih rentang yang bukan merupakan alamat RFC 1918, pastikan rentang ini tidak bertentangan dengan konfigurasi yang ada. Untuk informasi selengkapnya, lihat Rentang subnet IPv4.

    4. Untuk menentukan rentang sekunder subnet, klik Create secondary IP rentang alamat IP.

      Jika Anda memilih rentang yang bukan merupakan alamat RFC 1918, pastikan rentang ini tidak bertentangan dengan konfigurasi yang ada. Untuk informasi selengkapnya, lihat Rentang subnet IPv4.

    5. Private Google access: Anda dapat mengaktifkan Akses Google Pribadi untuk subnet saat membuatnya atau nanti dengan mengeditnya.

    6. Log aliran traffic: Anda dapat mengaktifkan alur VPC log untuk subnet saat Anda membuatnya atau nanti dengan mengeditnya.

    7. Klik Done.

  8. Di bagian Firewall rules, pada bagian IPv4 firewall rules, pilih nol atau beberapa aturan firewall yang telah ditetapkan sebelumnya.

    Aturan ini mengatasi kasus penggunaan umum terkait konektivitas ke instance. Anda dapat membuat aturan firewall sendiri setelah Anda membuat jaringan. Setiap nama aturan yang telah ditentukan dimulai dengan nama jaringan VPC yang Anda buat.

  9. Di bagian aturan firewall IPv4, untuk mengedit firewall masuk yang telah ditetapkan sebelumnya aturan bernama allow-custom, klik EDIT.

    Anda dapat mengedit subnet, menambahkan rentang IPv4 tambahan, dan menentukan protokol dan port tertentu.

    Aturan firewall allow-custom tidak diperbarui secara otomatis jika Anda menambahkan subnet tambahan nanti. Jika Anda memerlukan aturan firewall untuk subnet. Untuk menambahkan aturan, Anda harus memperbarui konfigurasi firewall.

  10. Di bagian Mode pemilihan rute dinamis, untuk jaringan VPC. Untuk informasi selengkapnya, lihat perutean dinamis mode. Anda dapat mengubah pemilihan rute dinamis mode nanti.

  11. Klik Create.

Membuat jaringan VPC yang mendukung perangkat jenis Netdevice atau DPDK

gcloud

gcloud compute networks subnets create SUBNET_NAME \
    --project=PROJECT_ID \
    --range=SUBNET_RANGE \
    --network=NETWORK_NAME \
    --region=REGION \
    --secondary-range=SECONDARY_RANGE_NAME=<SECONDARY_RANGE_RANGE>

Ganti kode berikut:

  • SUBNET_NAME: nama subnet.
  • PROJECT_ID: ID project yang berisi jaringan VPC tempat subnet dibuat.
  • SUBNET_RANGE: rentang alamat IPv4 utama untuk subnet baru, dalam notasi CIDR.
  • NETWORK_NAME: nama jaringan VPC yang berisi subnet baru.
  • REGION: region Google Cloud tempat subnet baru dibuat.
  • SECONDARY_RANGE_NAME: nama untuk rentang sekunder.
  • SECONDARY_IP_RANGE rentang alamat IPv4 sekunder dalam notasi CIDR.

Konsol

  1. Di konsol Google Cloud, buka halaman jaringan VPC.

  2. Klik Create VPC network.

  3. Di kolom Nama, masukkan nama jaringan. Misalnya, netdevice-vpc atau dpdk-vpc.

  4. Dari drop-down Maximum transmisi unit (MTU), pilih nilai MTU yang sesuai.

  5. Pada bagian Subnet creation mode, pilih Custom.

  6. Di bagian New subnet tentukan parameter konfigurasi berikut untuk subnet:

    1. Berikan Nama. Misalnya netdevice-subnet atau dpdk-vpc.

    2. Pilih Region.

    3. Masukkan IP address range. Ini adalah rentang IPv4 utama untuk subnet.

      Jika Anda memilih rentang yang bukan merupakan alamat RFC 1918, pastikan rentang ini tidak bertentangan dengan konfigurasi yang ada. Untuk informasi selengkapnya, lihat Rentang subnet IPv4.

    4. Private Google Access: Pilih apakah Akses Google Pribadi diaktifkan untuk subnetwork saat Anda membuatnya atau di lain waktu dengan mengeditnya.

    5. Log aliran traffic: Anda dapat mengaktifkan alur VPC log untuk subnet saat Anda membuatnya atau nanti dengan mengeditnya.

    6. Klik Done.

  7. Di bagian Firewall rules, pada bagian IPv4 firewall rules, pilih nol atau beberapa aturan firewall yang telah ditetapkan sebelumnya.

    Aturan ini mengatasi kasus penggunaan umum terkait konektivitas ke instance. Anda dapat membuat aturan firewall sendiri setelah Anda membuat jaringan. Setiap nama aturan yang telah ditentukan dimulai dengan nama jaringan VPC yang Anda buat.

  8. Di bagian aturan firewall IPv4, untuk mengedit firewall masuk yang telah ditetapkan sebelumnya aturan bernama allow-custom, klik EDIT.

    Anda dapat mengedit subnet, menambahkan rentang IPv4 tambahan, dan menentukan protokol dan port tertentu.

    Aturan firewall allow-custom tidak diperbarui secara otomatis jika Anda menambahkan subnet tambahan nanti. Jika Anda memerlukan aturan firewall untuk subnet. Untuk menambahkan aturan, Anda harus memperbarui konfigurasi firewall.

  9. Di bagian Mode pemilihan rute dinamis, untuk jaringan VPC. Untuk informasi selengkapnya, lihat perutean dinamis mode. Anda dapat mengubah pemilihan rute dinamis mode nanti.

  10. Klik Create.

Membuat cluster GKE dengan kemampuan multi-jaringan

gcloud

Untuk membuat cluster GKE dengan kemampuan multi-jaringan:

gcloud container clusters create CLUSTER_NAME \
    --cluster-version=CLUSTER_VERSION \
    --enable-dataplane-v2 \
    --enable-ip-alias \
    --enable-multi-networking

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster.
  • CLUSTER_VERSION: versi cluster.

Perintah ini menyertakan flag berikut:

  • --enable-multi-networking: mengaktifkan Resource Kustom multijaringan Definisi (CRD) di server API untuk cluster ini, dan men-deploy network-controller-manager yang berisi proses rekonsiliasi dan siklus proses untuk objek multi-jaringan.
  • --enable-dataplane-v2: mengaktifkan GKE Dataplane V2. Flag ini diperlukan untuk mengaktifkan multi-jaringan.

Konsol

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

    Buka Google Kubernetes Engine

  2. Klik Create.

  3. Konfigurasi cluster Standar Anda. Untuk informasi selengkapnya, lihat Membuat zona kelompok atau Buat kawasan cluster. Saat membuat cluster, pilih subnet Jaringan dan Node yang sesuai.

  4. Dari panel navigasi, di bagian Cluster, klik Networking.

  5. Pilih kotak centang Enable Dataplane V2.

  6. Pilih Aktifkan Multi-Jaringan.

  7. Klik Create.

Mengaktifkan multi-jaringan untuk cluster akan menambahkan CustomResourceDefinitions (CRD) yang diperlukan ke server API untuk cluster tersebut. Tindakan ini juga akan men-deploy pengelola-pengontrol-jaringan, yang bertanggung jawab untuk merekonsiliasi dan mengelola objek multi-jaringan. Anda tidak dapat mengubah konfigurasi cluster setelah dibuat.

Membuat node pool GKE yang terhubung ke VPC tambahan

Membuat kumpulan node yang mencakup node yang terhubung ke jaringan node (VPC dan subnet) dan Jaringan Pod (rentang sekunder) yang dibuat di Membuat jaringan Pod.

Untuk membuat node pool baru dan mengaitkannya dengan jaringan tambahan di cluster GKE:

gcloud

gcloud container node-pools create POOL_NAME \
  --cluster=CLUSTER_NAME \
  --additional-node-network network=NETWORK_NAME,subnetwork=SUBNET_NAME \
  --additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=POD_IP_RANGE,max-pods-per-node=NUMBER_OF_PODS \
  --additional-node-network network=highperformance,subnetwork=subnet-highperf

Ganti kode berikut:

  • POOL_NAME dengan nama node pool baru.
  • CLUSTER_NAME dengan nama cluster yang ada tempat Anda menambahkan kumpulan node.
  • NETWORK_NAME dengan nama jaringan yang akan dihubungkan dari node pool node.
  • SUBNET_NAME dengan nama subnet dalam jaringan yang akan digunakan untuk node.
  • POD_IP_RANGE rentang alamat IP Pod dalam subnet.
  • Jumlah maksimum Pod per node NUMBER_OF_PODS.

Perintah ini berisi flag berikut:

  • --additional-node-network: Menentukan detail antarmuka jaringan, jaringan, dan subnetwork tambahan. Atribut ini digunakan untuk menentukan jaringan node agar dapat terhubung ke node pool. Tentukan parameter ini saat Anda ingin terhubung ke VPC lain. Jika Anda tidak menetapkan parameter ini, VPC default yang terkait dengan cluster yang digunakan. Untuk jaringan jenis Layer 3, tentukan flag additional-pod-network yang menentukan jaringan Pod, yang diekspos di dalam cluster GKE sebagai objek Network. Saat menggunakan flag --additional-node-network, Anda harus menyediakan jaringan dan subnetwork sebagai parameter wajib. Pastikan Anda memisahkan nilai jaringan dan subjaringan dengan koma dan hindari penggunaan spasi.
  • --additional-pod-network: Menentukan detail rentang sekunder yang akan digunakan untuk jaringan Pod. Parameter ini tidak diperlukan jika Anda menggunakan jaringan jenis Device. Argumen ini menentukan nilai kunci berikut: subnetwork, pod-ipv4-range, dan max-pods-per-node. Saat menggunakan --additional-pod-network, Anda harus memberikan nilai pod-ipv4-range dan max-pods-per-node yang dipisahkan dengan koma dan tanpa spasi.
    • subnetwork: menautkan jaringan node dengan jaringan Pod. Subnetwork bersifat opsional. Jika Anda tidak menentukannya, jaringan Pod tambahan yang terkait dengan subnetwork default yang disediakan selama pembuatan cluster.
    • --max-pods-per-node: max-pods-per-node harus ditentukan dan harus berupa 2. Nilai minimum adalah 4. max-pods-per-node tidak boleh lebih dari nilai max-pods-per-node pada node pool.

Konsol

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

    Buka Google Kubernetes Engine

  2. Dari panel navigasi, klik Clusters.

  3. Di bagian Cluster Kubernetes, klik cluster yang Anda buat.

  4. Di bagian atas halaman, untuk membuat kumpulan node, klik Add Node Pool.

  5. Di bagian Node pool details, selesaikan tindakan berikut:

    1. Masukkan Nama untuk node pool.
    2. Masukkan Jumlah node yang akan dibuat di node pool.
  6. Dari panel navigasi, di bagian Node Pools, klik Nodes.

    1. Dari menu drop-down Image type, pilih Image node Container-Optimized OS with containerd (cos_containerd).

  7. Saat membuat VM, Anda memilih jenis mesin dari kelompok mesin yang menentukan resource yang tersedia untuk VM tersebut. Misalnya, jenis mesin seperti e2-standard-4 berisi 4 vCPU, sehingga dapat mendukung hingga 4 VPC total. Ada beberapa kelompok mesin yang dapat Anda pilih dan masing-masing dibagi lagi menjadi beberapa seri mesin dan kelompok mesin yang telah jenis mesin kustom dalam setiap seri. Setiap jenis mesin dikenai biaya secara berbeda. Untuk mengetahui informasi selengkapnya, lihat lembar harga jenis mesin.

  8. Dari panel navigasi, pilih Networking.

  9. Di bagian Jaringan Node, tentukan jumlah maksimum Pod per node. Bagian Jaringan Node menampilkan jaringan VPC yang digunakan untuk membuat . Anda perlu menetapkan Jaringan {i>Node<i} tambahan yang berkorelasi dengan Jaringan VPC dan jenis Perangkat yang telah ditetapkan sebelumnya.

  10. Buat pengaitan kumpulan node:

    1. Untuk perangkat jenis Layer 3:
      1. Di bagian Node Networks, klik ADD A NODE NETWORK.
      2. Dari menu drop-down jaringan, pilih VPC yang mendukung perangkat jenis Layer 3.
      3. Pilih subnet yang dibuat untuk VPC Layer 3.
      4. Di bagian Rentang alamat IP Pod Alias, klik Add Pod IP address range.
      5. Pilih Secondary subnet dan tunjukkan Max number of Pods per node.
      6. Pilih Selesai.
    2. Untuk perangkat jenis Netdevice dan DPDK:
      1. Di bagian Node Networks, klik ADD A NODE NETWORK.
      2. Dari menu drop-down jaringan, pilih VPC yang mendukung perangkat jenis Netdevice atau DPDK.
      3. Pilih subnet yang dibuat untuk VPC Netdevice atau DPDK.
      4. Pilih Selesai.
  11. Klik Create.

Catatan:

  • Jika beberapa jaringan Pod tambahan ditentukan dalam jaringan node yang sama, jaringan tersebut harus berada di subnet yang sama.
  • Anda tidak dapat mereferensikan rentang sekunder subnet yang sama beberapa kali.

Contoh Contoh berikut membuat kumpulan node bernama pool-multi-net yang menghubungkan dua jaringan tambahan ke node, datapalane (jaringan jenis Layer 3) dan performa tinggi (jaringan jenis netdevice). Contoh ini mengasumsikan bahwa Anda sudah membuat cluster GKE bernama cluster-1:

gcloud container node-pools create pool-multi-net \
  --project my-project \
  --cluster cluster-1 \
  --zone us-central1-c \
  --additional-node-network network=dataplane,subnetwork=subnet-dp \
  --additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-blue,max-pods-per-node=8 \
  --additional-node-network network=highperformance,subnetwork=subnet-highperf

Untuk menentukan antarmuka jaringan node dan jaringan Pod tambahan, tentukan parameter --additional-node-network dan --additional-pod-network beberapa kali seperti ditunjukkan dalam contoh berikut:

--additional-node-network network=dataplane,subnetwork=subnet-dp \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-blue,max-pods-per-node=8 \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-green,max-pods-per-node=8 \
--additional-node-network network=managementdataplane,subnetwork=subnet-mp \
--additional-pod-network subnetwork=subnet-mp,pod-ipv4-range=sec-range-red,max-pods-per-node=4

Untuk menentukan jaringan Pod tambahan langsung di antarmuka VPC utama node pool, seperti yang ditunjukkan dalam contoh berikut:

--additional-pod-network subnetwork=subnet-def,pod-ipv4-range=sec-range-multinet,max-pods-per-node=8

Membuat jaringan Pod

Tentukan jaringan Pod yang akan diakses oleh Pod dengan menentukan objek Kubernetes dan menautkannya ke resource Compute Engine yang sesuai, seperti VPC, subnet, dan rentang sekunder.

Untuk membuat jaringan Pod, Anda harus menentukan objek CRD Jaringan dalam cluster.

Konfigurasi jaringan VPC Layer 3

YAML

Untuk VPC Layer 3, buat Network dan GKENetworkParamSet objek:

  1. Simpan manifes contoh berikut sebagai blue-network.yaml:

    apiVersion: networking.gke.io/v1
    kind: Network
    metadata:
      name: blue-network
    spec:
      type: "L3"
      parametersRef:
        group: networking.gke.io
        kind: GKENetworkParamSet
        name: "l3-vpc"
    

    Manifes menentukan resource Network bernama blue-network dari jenis Layer 3. Objek Network merujuk ke objek GKENetworkParamSet yang disebut l3-vpc, yang mengaitkan jaringan dengan resource Compute Engine.

  2. Terapkan manifes ke cluster:

    kubectl apply -f blue-network.yaml
    
  3. Simpan manifes berikut sebagai dataplane.yaml:

    apiVersion: networking.gke.io/v1
    kind: GKENetworkParamSet
    metadata:
      name: "l3-vpc"
    spec:
      vpc: "l3-vpc"
      vpcSubnet: "subnet-dp"
      podIPv4Ranges:
        rangeNames:
        - "sec-range-blue"
    

    Manifes ini menentukan objek GKENetworkParamSet bernama dataplane, kumpulan nama VPC sebagai dataplane, nama subnet sebagai subnet-dp, dan rentang alamat IPv4 sekunder untuk Pod yang disebut sec-range-blue.

  4. Terapkan manifes ke cluster:

    kubectl apply -f dataplane.yaml
    

Konsol

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

    Buka Google Kubernetes Engine

  2. Dari panel navigasi, klik Network Function Optimizer.

  3. Klik Enable GKE Enterprise.

  4. Di bagian atas halaman, klik Buat untuk membuat jaringan Pod.

  5. Di bagian Sebelum memulai, verifikasi detailnya.

  6. Klik BERIKUTNYA: LOKASI JARINGAN POD.

  7. Di bagian Pod network location, dari drop-down Cluster, memilih cluster GKE yang memiliki jaringan multi-jaringan dan GKE Dataplane V2 diaktifkan.

  8. Klik BERIKUTNYA: REFERENSI JARINGAN VPC.

  9. Di bagian Referensi jaringan VPC, dari Referensi jaringan VPC pilih drop-down, pilih jaringan VPC yang digunakan untuk Layer 3 Pod multinic.

  10. Klik BERIKUTNYA: JENIS JARINGAN POD.

  11. Di bagian Pod network type, pilih L3, lalu masukkan Pod nama jaringan.

  12. Klik BERIKUTNYA: RENTANG SEKITAS JARINGAN POD.

  13. Di bagian Pod network secondary range, masukkan kolom Secondary rentang.

  14. Klik BERIKUTNYA: RUTE JARINGAN POD.

  15. Di bagian Pod network routes, untuk menentukan Custom routes, pilih ADD ROUTE.

  16. Klik CREATE POD NETWORK.

Mengonfigurasi jaringan DPDK

YAML

Untuk VPC DPDK, buat objek Network dan GKENetworkParamSet.

  1. Simpan contoh manifes berikut sebagai dpdk-network.yaml:

    apiVersion: networking.gke.io/v1
    kind: Network
    metadata:
      name: dpdk-network
    spec:
      type: "Device"
      parametersRef:
        group: networking.gke.io
        kind: GKENetworkParamSet
        name: "dpdk"
    

    Manifes ini menentukan resource Network bernama dpdk-network dengan jenis Device. Resource Network mereferensikan objek GKENetworkParamSet yang disebut dpdk untuk konfigurasinya.

  2. Terapkan manifes ke cluster:

    kubectl apply -f dpdk-network.yaml
    
  3. Untuk objek GKENetworkParamSet, simpan manifes berikut sebagai dpdk.yaml:

    apiVersion: networking.gke.io/v1
    kind: GKENetworkParamSet
    metadata:
      name: "dpdk"
    spec:
      vpc: "dpdk"
      vpcSubnet: "subnet-dpdk"
      deviceMode: "DPDK-VFIO"
    

    Manifes ini menentukan objek GKENetworkParamSet bernama dpdk, menetapkan nama VPC sebagai dpdk, nama subnet sebagai subnet-dpdk, dan nama deviceMode sebagai DPDK-VFIO.

  4. Terapkan manifes ke cluster:

    kubectl apply -f dpdk-network.yaml
    

Konsol

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

    Buka Google Kubernetes Engine

  2. Dari panel navigasi, klik Network Function Optimizer.

  3. Di bagian atas halaman, klik Buat untuk membuat jaringan Pod.

  4. Di bagian Sebelum memulai, verifikasi detailnya.

  5. Klik BERIKUTNYA: LOKASI JARINGAN POD.

  6. Di bagian Pod network location, dari drop-down Cluster, memilih cluster GKE yang memiliki jaringan multi-jaringan dan GKE Dataplane V2 diaktifkan.

  7. Klik BERIKUTNYA: REFERENSI JARINGAN VPC.

  8. Di bagian Referensi jaringan VPC, dari Referensi jaringan VPC pilih jaringan VPC yang digunakan untuk dpdk multinic Pods.

  9. Klik BERIKUTNYA: JENIS JARINGAN POD.

  10. Di bagian Pod network type, pilih DPDK-VFIO (Device) dan masukkan nama jaringan Pod.

  11. Klik BERIKUTNYA: RENTANG SEKITAS JARINGAN POD. Bagian rentang sekunder jaringan Pod tidak akan tersedia

  12. Klik BERIKUTNYA: RUTE JARINGAN POD. Di bagian rute jaringan Pod, pilih ADD ROUTE untuk menentukan rute kustom

  13. Klik CREATE POD NETWORK.

Mengonfigurasi jaringan netdevice

Untuk VPC netdevice, buat Network dan GKENetworkParamSet objek terstruktur dalam jumlah besar.

YAML

  1. Simpan manifes contoh berikut sebagai netdevice-network.yaml:

    apiVersion: networking.gke.io/v1
    kind: Network
    metadata:
        name: netdevice-network
    spec:
        type: "Device"
        parametersRef:
          group: networking.gke.io
          kind: GKENetworkParamSet
          name: "netdevice"
    

    Manifes ini menentukan resource Network bernama netdevice-network dengan jenis Device. Class ini merujuk ke objek GKENetworkParamSet bernama netdevice.

  2. Terapkan manifes ke cluster:

    kubectl apply -f netdevice-network.yaml
    
  3. Simpan manifes berikut sebagai netdevice.yaml:

    apiVersion: networking.gke.io/v1
    kind: GKENetworkParamSet
    metadata:
      name: netdevice
    spec:
      vpc: netdevice
      vpcSubnet: subnet-netdevice
      deviceMode: NetDevice
    

    Manifes ini menentukan resource GKENetworkParamSet bernama netdevice, kumpulan nama VPC sebagai netdevice, nama subnet sebagai subnet-netdevice, dan menentukan mode perangkat sebagai NetDevice.

  4. Terapkan manifes ke cluster:

    kubectl apply -f netdevice.yaml
    

Konsol

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

    Buka Google Kubernetes Engine

  2. Dari panel navigasi, klik Network Function Optimizer.

  3. Di bagian atas halaman, klik Buat untuk membuat jaringan Pod.

  4. Di bagian Sebelum memulai, verifikasi detailnya.

  5. Klik BERIKUTNYA: LOKASI JARINGAN POD.

  6. Di bagian Pod network location, dari drop-down Cluster, memilih cluster GKE yang memiliki jaringan multi-jaringan dan GKE Dataplane V2 diaktifkan.

  7. Klik BERIKUTNYA: REFERENSI JARINGAN VPC.

  8. Di bagian Referensi jaringan VPC, dari Referensi jaringan VPC pilih jaringan VPC yang digunakan untuk Pod multinic netdevice.

  9. Klik BERIKUTNYA: JENIS JARINGAN POD.

  10. Di bagian Pod network type, pilih NetDevice (Device) dan masukkan nama jaringan Pod.

  11. Klik BERIKUTNYA: RENTANG SEKITAS JARINGAN POD. Bagian rentang sekunder jaringan Pod tidak akan tersedia

  12. Klik BERIKUTNYA: RUTE JARINGAN POD. Di bagian rute jaringan Pod, untuk menentukan rute kustom, pilih ADD ROUTE.

  13. Klik CREATE POD NETWORK.

Mengonfigurasi rute jaringan

Mengonfigurasi rute jaringan memungkinkan Anda menentukan rute kustom untuk jaringan, yang disiapkan di Pod untuk mengarahkan traffic ke dalam Pod.

YAML

  1. Simpan manifes berikut sebagai red-network.yaml:

    apiVersion: networking.gke.io/v1
    kind: Network
    metadata:
      name: red-network
    spec:
      type: "L3"
      parametersRef:
        group: networking.gke.io
        kind: GKENetworkParamSet
        name: "management"
      routes:
      -   to: "10.0.2.0/28"
    

    Manifes ini menentukan resource Jaringan bernama red-network dengan jenis Layer 3 dan rute kustom "10.0.2.0/28" melalui antarmuka Jaringan tersebut.

  2. Terapkan manifes ke cluster:

    kubectl apply -f red-network.yaml
    

Konsol

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

    Buka Google Kubernetes Engine

  2. Klik Create.

  3. Dari panel navigasi, klik Network Function Optimizer.

  4. Di bagian Cluster Kubernetes, klik cluster yang Anda buat.

  5. Di bagian atas halaman, klik Create untuk membuat jaringan Pod.

  6. Di bagian Rute jaringan pod, tentukan Rute kustom.

  7. Klik CREATE POD NETWORK.

Mereferensikan Network yang sudah disiapkan

Dalam konfigurasi beban kerja Anda, referensikan objek Kubernetes Network yang sudah disiapkan menggunakan Kubernetes API.

Menghubungkan Pod ke jaringan tertentu

Untuk menghubungkan Pod ke jaringan yang sudah ditentukan, Anda harus menyertakan nama objek Network sebagai anotasi di dalam konfigurasi Pod. Pastikan untuk sertakan default Network dan jaringan tambahan yang dipilih dalam anotasi untuk membuat koneksi.

  1. Simpan manifes contoh berikut sebagai sample-l3-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: sample-l3-pod
      annotations:
        networking.gke.io/default-interface: 'eth0'
        networking.gke.io/interfaces: |
          [
            {"interfaceName":"eth0","network":"default"},
            {"interfaceName":"eth1","network":"blue-network"}
          ]
    spec:
      containers:
      - name: sample-l3-pod
        image: busybox
        command: ["sleep", "10m"]
        ports:
        - containerPort: 80
      restartPolicy: Always
    

    Manifes ini membuat Pod bernama sample-l3-pod dengan dua antarmuka jaringan, eth0 dan eth1, yang masing-masing terkait dengan jaringan default dan blue-network.

  2. Terapkan manifes ke cluster:

    kubectl apply -f sample-l3-pod.yaml
    

Menghubungkan Pod dengan beberapa jaringan

  1. Simpan manifes contoh berikut sebagai sample-l3-netdevice-pod.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: sample-l3-netdevice-pod
      annotations:
        networking.gke.io/default-interface: 'eth0'
        networking.gke.io/interfaces: |
          [
            {"interfaceName":"eth0","network":"default"},
            {"interfaceName":"eth1","network":"blue-network"},
            {"interfaceName":"eth2","network":"netdevice-network"}
          ]
    spec:
      containers:
      - name: sample-l3-netdevice-pod
        image: busybox
        command: ["sleep", "10m"]
        ports:
        - containerPort: 80
      restartPolicy: Always
    

    Manifes ini membuat Pod bernama sample-l3-netdevice-pod dengan tiga jaringan antarmuka, eth0, eth1, dan eth2 yang terkait dengan default, blue-network, dan netdevice.

  2. Terapkan manifes ke cluster:

    kubectl apply -f sample-l3-netdevice-pod.yaml
    

Anda dapat menggunakan anotasi yang sama di ReplicaSet (Deployment atau DaemonSet) di bagian anotasi template.

Contoh konfigurasi Pod dengan beberapa antarmuka:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
2: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default
    link/ether 2a:92:4a:e5:da:35 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.60.45.4/24 brd 10.60.45.255 scope global eth0
      valid_lft forever preferred_lft forever
10: eth1@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default qlen 1000
    link/ether ba:f0:4d:eb:e8:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.16.1.2/32 scope global eth1
      valid_lft forever preferred_lft forever

Verifikasi

  • Pastikan Anda membuat cluster dengan --enable-multi-networking hanya jika --enable-dataplane-v2 diaktifkan.
  • Pastikan semua node pool di cluster menjalankan Container-Optimized OS image untuk Container pada saat pembuatan cluster dan node pool.
  • Pastikan bahwa node pool dibuat dengan --additional-node-network atau --additional-pod-network hanya jika multi-jaringan diaktifkan di cluster tersebut.
  • Pastikan subnet yang sama tidak ditentukan dua kali sebagai argumen --additional-node-network untuk node pool.
  • Pastikan rentang sekunder yang sama tidak ditentukan sebagai argumen --additional-pod-network ke node pool.
  • Patuhi batas skala yang ditentukan untuk objek jaringan dengan mempertimbangkan jumlah maksimum node, Pod, dan alamat IP yang diizinkan.
  • Pastikan hanya ada satu objek GKENetworkParamSet yang merujuk ke subnet dan rentang sekunder tertentu.
  • Verifikasi bahwa setiap objek jaringan merujuk ke objek GKENetworkParamSet yang berbeda.
  • Pastikan objek jaringan, jika dibuat dengan subnet tertentu menggunakan jaringan Device, tidak digunakan pada node yang sama dengan jaringan lain yang memiliki rentang sekunder. Anda hanya dapat memvalidasinya pada runtime.
  • Pastikan berbagai rentang sekunder yang ditetapkan ke node pool tidak memiliki alamat IP yang tumpang-tindih.

Memecahkan masalah parameter multi-jaringan di GKE

Saat Anda membuat cluster dan node pool, Google Cloud akan menerapkan pemeriksaan tertentu untuk memastikan bahwa hanya parameter multi-jaringan valid yang diizinkan. Tindakan ini akan memastikan jaringan disiapkan dengan benar untuk cluster.

Jika gagal membuat workload multi-jaringan, Anda dapat memeriksa status dan peristiwa Pod untuk mengetahui informasi selengkapnya:

kubectl describe pods samplepod

Output-nya mirip dengan yang berikut ini:

Name:         samplepod
Namespace:    default
Status:       Running
IP:           192.168.6.130
IPs:
  IP:  192.168.6.130
...
Events:
  Type     Reason                  Age   From               Message
  ----     ------                  ----  ----               -------
  Normal   NotTriggerScaleUp  9s               cluster-autoscaler  pod didn't trigger scale-up:
  Warning  FailedScheduling   8s (x2 over 9s)  default-scheduler   0/1 nodes are available: 1 Insufficient networking.gke.io.networks/my-net.IP. preemption: 0/1 nodes are available: 1 No preemption victims found for incoming pod

Berikut ini beberapa alasan umum kegagalan pembuatan Pod:

  • Gagal menjadwalkan Pod karena persyaratan resource multi-jaringan tidak terpenuhi
  • Gagal mengidentifikasi jaringan yang ditentukan

Memecahkan masalah pembuatan jaringan Kubernetes

Setelah Anda berhasil membuat jaringan, node yang seharusnya memiliki akses ke jaringan yang dikonfigurasi akan dianotasikan dengan anotasi status jaringan.

Untuk mengamati anotasi, jalankan perintah berikut:

kubectl describe node NODE_NAME

Ganti NODE_NAME dengan nama node.

Output-nya mirip dengan yang berikut ini:

networking.gke.io/network-status: [{"name":"default"},{"name":"dp-network"}]

Output-nya mencantumkan setiap jaringan yang tersedia di node. Jika status jaringan yang diharapkan tidak terlihat di node, lakukan langkah berikut:

Memeriksa apakah node dapat mengakses jaringan atau tidak

Jika jaringan tidak muncul dalam anotasi status jaringan node:

  1. Pastikan node adalah bagian suatu kumpulan yang dikonfigurasi untuk multi-jaringan.
  2. Periksa antarmuka node untuk melihat apakah node tersebut memiliki antarmuka untuk jaringan yang Anda konfigurasi.
  3. Jika node tidak memiliki status jaringan dan hanya memiliki satu antarmuka jaringan, Anda masih harus membuat node pool menggunakan multi-jaringan yang diaktifkan.
  4. Jika node Anda berisi antarmuka untuk jaringan yang dikonfigurasi, tetapi tidak terlihat dalam anotasi status jaringan, periksa resource Network dan GKENetworkParamSet (GNP).

Memeriksa resource Network dan GKENetworkParamSet

Status resource Network dan GKENetworkParamSet (GNP) mencakup kolom kondisi untuk melaporkan error konfigurasi. Sebaiknya periksa GNP terlebih dahulu karena GNP tidak bergantung pada resource lain agar valid.

Untuk memeriksa kolom kondisi, jalankan perintah berikut:

kubectl get gkenetworkparamsets GNP_NAME -o yaml

Ganti GNP_NAME dengan nama resource GKENetworkParamSet.

Jika kondisi Ready sama dengan benar (true), konfigurasi akan valid dan output-nya mirip dengan yang berikut ini:

apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
...
spec:
  podIPv4Ranges:
    rangeNames:
    -   sec-range-blue
  vpc: dataplane
  vpcSubnet: subnet-dp
status:
  conditions:
  -   lastTransitionTime: "2023-06-26T17:38:04Z"
    message: ""
    reason: GNPReady
    status: "True"
    type: Ready
  networkName: dp-network
  podCIDRs:
    cidrBlocks:
    -   172.16.1.0/24

Jika kondisi Ready sama dengan salah (false), output akan menampilkan alasan dan mirip dengan yang berikut ini:

apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
...
spec:
  podIPv4Ranges:
    rangeNames:
    -   sec-range-blue
  vpc: dataplane
  vpcSubnet: subnet-nonexist
status:
  conditions:
  -   lastTransitionTime: "2023-06-26T17:37:57Z"
    message: 'subnet: subnet-nonexist not found in VPC: dataplane'
    reason: SubnetNotFound
    status: "False"
    type: Ready
  networkName: ""

Jika Anda mendapatkan pesan yang serupa, pastikan GNP Anda sudah dikonfigurasi dengan benar. Jika sudah, pastikan konfigurasi jaringan Google Cloud Anda sudah benar. Sesudah memperbarui konfigurasi jaringan Google Cloud, Anda mungkin perlu membuat ulang GNP untuk memicu sinkronisasi ulang secara manual. Hal ini dilakukan untuk menghindari polling Google Cloud Compute Engine API.

Setelah GNP siap, periksa resource Network.

kubectl get networks NETWORK_NAME -o yaml

Ganti NETWORK_NAME dengan nama resource Network.

Output konfigurasi yang valid mirip dengan yang berikut ini:

apiVersion: networking.gke.io/v1
kind: Network
...
spec:
  parametersRef:
    group: networking.gke.io
    kind: GKENetworkParamSet
    name: dp-gnp
  type: L3
status:
  conditions:
  -   lastTransitionTime: "2023-06-07T19:31:42Z"
    message: ""
    reason: GNPParamsReady
    status: "True"
    type: ParamsReady
  -   lastTransitionTime: "2023-06-07T19:31:51Z"
    message: ""
    reason: NetworkReady
    status: "True"
    type: Ready
  • reason: NetworkReady menunjukkan bahwa resource Jaringan telah dikonfigurasi dengan benar. reason: NetworkReady tidak berarti bahwa resource Jaringan selalu tersedia di node tertentu atau digunakan secara aktif.
  • Jika ada kesalahan konfigurasi atau error, kolom reason dalam kondisi akan menentukan alasan pasti atas masalah tersebut. Dalam kasus tersebut, sesuaikan konfigurasi sebagaimana mestinya.
  • GKE akan mengisi kolom ParamsReady jika kolom parameterRef ditetapkan ke resource GKENetworkParamSet yang ada di cluster. Jika Anda telah menentukan jenis parameterRef GKENetworkParamSet dan kondisi tidak muncul, pastikan nama, jenis, dan grup cocok dengan resource GNP yang ada dalam cluster Anda.

Langkah berikutnya