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.

Sebelum membaca halaman ini, pastikan Anda memahami konsep jaringan umum, 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 Standard versi 1.28 atau yang lebih baru.
  • GKE Autopilot versi 1.29.5-gke.1091000 dan yang lebih baru atau versi 1.30.1-gke.1280000 dan yang lebih baru.
  • 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.
  • CIDR 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 Shared VPC, pastikan cluster GKE Anda berjalan versi 1.28.4 atau yang lebih baru.
  • Untuk deployment VPC Bersama, semua antarmuka jaringan (NIC) yang dilampirkan ke node harus berasal dari project yang sama dengan project host.
  • Nama objek jaringan yang diketik perangkat tidak boleh melebihi 41 karakter. Jalur lengkap setiap soket domain UNIX disusun, termasuk nama jaringan yang sesuai. Linux memiliki batasan pada panjang jalur soket (di bawah 107 byte). Setelah memperhitungkan direktori, awalan nama file, dan ekstensi .sock, nama jaringan dibatasi hingga 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.
  • Mode Autopilot tidak mendukung DPDK.
  • 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 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 di cluster yang berada dalam Project yang diaktifkan dengan GKE Enterprise:

Untuk memahami tagihan 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. Membuat jaringan Pod dan mereferensikan VPC, subnet, dan rentang sekunder yang benar di objek 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.
  • 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.

Menyiapkan VPC tambahan

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

Untuk menyiapkan VPC tambahan, pertimbangkan persyaratan berikut:

  • 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 node pool dan jumlah Pod per node yang ingin Anda miliki.
    • Serupa dengan jaringan Pod default, jaringan Pod lainnya menggunakan penyediaan alamat IP yang berlebihan. Rentang alamat IP sekunder harus memiliki alamat IP dua kali lebih banyak per node dibandingkan dengan jumlah Pod per node.
  • Persyaratan jaringan jenis Device: Buat subnet reguler di VPC. Anda tidak memerlukan subnet sekunder.

Untuk mengaktifkan kemampuan multi-jaringan di node pool, Anda harus menyiapkan VPC yang ingin Anda buatkan koneksi tambahan. Anda dapat menggunakan VPC yang ada atau Membuat VPC baru khusus untuk node pool.

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 node pool dan jumlah Pod per node yang ingin Anda miliki.
  • Serupa dengan jaringan Pod default, jaringan Pod lainnya menggunakan penyediaan alamat IP yang berlebihan. Rentang alamat IP sekunder harus memiliki alamat IP dua kali lebih banyak per node dibandingkan dengan 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 Name, masukkan nama jaringan. Contoh, l3-vpc.

  4. Dari dropdown Maximum transmission unit (MTU), pilih nilai MTU yang sesuai.

  5. Pada bagian Subnet creation mode, pilih Custom.

  6. Klik TAMBAHKAN 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 tersebut tidak bertentangan dengan konfigurasi yang ada. Untuk informasi selengkapnya, lihat Rentang subnet IPv4.

    4. Untuk menentukan rentang sekunder untuk subnet, klik Create secondary IP address range.

      Jika Anda memilih rentang yang bukan merupakan alamat RFC 1918, pastikan rentang tersebut 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. Flow logs: Anda dapat mengaktifkan log aliran VPC untuk subnet saat Anda membuatnya atau di lain waktu dengan mengeditnya.

    7. Klik Done.

  8. Di bagian Firewall rules, pada IPv4 firewall rules, pilih nol atau beberapa aturan firewall bawaan.

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

  9. Di bagian IPv4 firewall rules, untuk mengedit aturan firewall masuk bawaan bernama allow-custom, klik EDIT.

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

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

  10. Di bagian Dynamic routing mode, untuk jaringan VPC. Untuk informasi selengkapnya, lihat mode pemilihan rute dinamis. Anda dapat mengubah mode pemilihan rute dinamis 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 Name, masukkan nama jaringan. Misalnya, netdevice-vpc atau dpdk-vpc.

  4. Dari dropdown Maximum transmission 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 tersebut 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. Flow logs: Anda dapat mengaktifkan log aliran VPC untuk subnet saat Anda membuatnya atau di lain waktu dengan mengeditnya.

    6. Klik Done.

  7. Di bagian Firewall rules, pada IPv4 firewall rules, pilih nol atau beberapa aturan firewall bawaan.

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

  8. Di bagian IPv4 firewall rules, untuk mengedit aturan firewall masuk bawaan bernama allow-custom, klik EDIT.

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

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

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

  10. Klik Create.

Membuat cluster GKE dengan kemampuan multi-jaringan

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 cluster GKE Autopilot dengan kemampuan multi-jaringan

Buat cluster GKE Autopilot dengan kemampuan multi-jaringan:

gcloud container clusters create-auto CLUSTER_NAME \
    --cluster-version=CLUSTER_VERSION \
    --enable-multi-networking

Ganti kode berikut:

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

Flag --enable-multi-networking mengaktifkan Definisi Resource Kustom (CRD) multi-jaringan di server API untuk cluster ini, dan men-deploy pengelola pengontrol jaringan yang berisi rekonsiliasi dan pengelolaan siklus proses untuk objek multi-jaringan.

Membuat cluster GKE Standard dengan kemampuan multi-jaringan

gcloud

Buat cluster GKE Standard 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 Definisi Resource Kustom (CRD) multi-jaringan di server API untuk cluster ini, dan men-deploy pengelola-pengontrol-jaringan yang berisi rekonsiliasi dan pengelolaan 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. Konfigurasikan cluster Standard Anda. Untuk mengetahui informasi selengkapnya, lihat Membuat cluster zona atau Membuat cluster regional. Saat membuat cluster, pilih subnet Jaringan dan Node yang sesuai.

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

  5. Centang kotak Aktifkan Dataplane V2.

  6. Pilih Aktifkan Multi-Jaringan.

  7. Klik Create.

Membuat node pool GKE Standard yang terhubung ke VPC tambahan

Buat node pool 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 node pool.
  • NETWORK_NAME dengan nama jaringan untuk memasang node node pool.
  • SUBNET_NAME dengan nama subnet dalam jaringan yang akan digunakan untuk node.
  • POD_IP_RANGE rentang alamat IP Pod dalam subnet.
  • NUMBER_OF_PODS jumlah maksimum Pod per node.

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 menentukan parameter ini, VPC default yang terkait dengan cluster tersebut akan 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 akan dikaitkan 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 Kubernetes clusters, klik cluster yang Anda buat.

  4. Di bagian atas halaman, untuk membuat node pool, 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 Container-Optimized OS with containerd (cos_containerd) node image.

  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 total 4 VPC. Ada beberapa kelompok mesin yang dapat Anda pilih dan setiap kelompok mesin diatur lebih lanjut menjadi rangkaian mesin dan jenis mesin yang telah ditetapkan atau kustom dalam setiap rangkaian. Setiap jenis mesin ditagih secara berbeda. Untuk mengetahui informasi selengkapnya, lihat lembar harga jenis mesin.

  8. Dari panel navigasi, pilih Networking.

  9. Di bagian Node Networking, tentukan jumlah maksimum Pod per node. Bagian Jaringan Node menampilkan jaringan VPC yang digunakan untuk membuat cluster. Anda harus menetapkan Jaringan Node tambahan yang berkorelasi dengan Jaringan VPC dan jenis Perangkat yang dibuat sebelumnya.

  10. Membuat pengaitan node pool:

    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 Lapisan 3.
      3. Pilih subnet yang dibuat untuk VPC Layer 3.
      4. Di bagian Rentang alamat IP Pod Alias, klik Tambahkan rentang alamat IP Pod.
      5. Pilih Subnet sekunder dan tunjukkan Jumlah maksimum Pod 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 node pool bernama pool-multi-net yang melampirkan dua jaringan tambahan ke node, datapalane (jaringan jenis Layer 3) dan highperformance (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 di cluster.

Mengonfigurasi jaringan VPC Layer 3

YAML

Untuk VPC Layer 3, buat objek Network dan GKENetworkParamSet:

  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 mereferensikan 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: "dataplane"
    spec:
      vpc: "l3-vpc"
      vpcSubnet: "subnet-dp"
      podIPv4Ranges:
        rangeNames:
        - "sec-range-blue"
    

    Manifes ini menentukan objek GKENetworkParamSet bernama dataplane, menetapkan nama VPC sebagai l3-vpc, 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. Di bagian atas halaman, klik Create 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, pilih cluster GKE yang mengaktifkan multi-jaringan dan GKE Dataplane V2.

  7. Klik BERIKUTNYA: VPC NETWORK REFERENCE.

  8. Di bagian VPC network reference, dari drop-down VPC network reference, pilih jaringan VPC yang digunakan untuk Pod multinic Layer 3.

  9. Klik BERIKUTNYA: JENIS JARINGAN POD.

  10. Di bagian Pod network type, pilih L3 dan masukkan Pod network name.

  11. Klik BERIKUTNYA: Rentang Sekunder Jaringan POD.

  12. Di bagian Rentang sekunder jaringan pod, masukkan Rentang sekunder.

  13. Klik BERIKUTNYA: POD NETWORK ROUTES.

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

  15. Klik BUAT JARINGAN POD.

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 Create 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, pilih cluster GKE yang mengaktifkan multi-jaringan dan GKE Dataplane V2.

  7. Klik BERIKUTNYA: VPC NETWORK REFERENCE.

  8. Di bagian VPC network reference, dari drop-down VPC network reference, pilih jaringan VPC yang digunakan untuk Pod multinic dpdk.

  9. Klik BERIKUTNYA: JENIS JARINGAN POD.

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

  11. Klik BERIKUTNYA: Rentang Sekunder Jaringan POD. Bagian rentang sekunder jaringan Pod tidak akan tersedia

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

  13. Klik BUAT JARINGAN POD.

Mengonfigurasi jaringan netdevice

Untuk VPC netdevice, buat objek Network dan GKENetworkParamSet.

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, menetapkan 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 Create 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, pilih cluster GKE yang mengaktifkan multi-jaringan dan GKE Dataplane V2.

  7. Klik BERIKUTNYA: VPC NETWORK REFERENCE.

  8. Di bagian VPC network reference, dari drop-down VPC network reference, 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 Pod network name.

  11. Klik BERIKUTNYA: RANGE SEKUNDER JARINGAN POD. Bagian rentang sekunder jaringan Pod tidak akan tersedia

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

  13. Klik BUAT JARINGAN POD.

Mengonfigurasi rute jaringan

Dengan mengonfigurasi rute jaringan, Anda dapat menentukan rute kustom untuk jaringan tertentu yang disiapkan di Pod untuk mengarahkan traffic ke antarmuka yang sesuai 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 Kubernetes clusters, klik cluster yang Anda buat.

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

  6. Di bagian Pod network routes, tentukan Custom routes.

  7. Klik BUAT JARINGAN POD.

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 Anda menyertakan default Network dan jaringan tambahan yang dipilih dalam anotasi agar dapat 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 antarmuka jaringan, eth0, eth1, dan eth2 yang masing-masing terkait dengan jaringan 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. Setelah memperbarui konfigurasi jaringan Google Cloud, Anda mungkin harus membuat ulang resource GNP untuk memicu sinkronisasi ulang secara manual. Tindakan ini dilakukan untuk menghindari polling tanpa batas pada Google Cloud 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