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 multijaringan hanya tersedia untuk project yang diaktifkan dengan GKE Enterprise.

Anda harus sudah 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 versi 1.28 atau yang lebih baru.
  • Aktifkan 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.
  • CIDR Multi-Pod tidak tersedia untuk cluster yang mengaktifkan multi-jaringan.
  • 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 cluster GKE Anda menjalankan versi 1.28.4 atau yang lebih baru.
  • Untuk deployment VPC Bersama, semua antarmuka jaringan (NIC) yang terpasang ke node harus berasal dari project yang sama dengan project host.

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 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 3.000 node dengan berbagai antarmuka.
  • Anda dapat memiliki hingga 100.000 antarmuka tambahan di semua Pod.
  • Anda dapat mengonfigurasi hingga maksimum 1.000 node dengan jaringan jenis Device.
  • Anda dapat mengonfigurasi hingga maksimum 4 jaringan jenis Device per node.

Harga

Fitur Network Function Optimizer (NFO) termasuk multi-jaringan dan dukungan berperforma tinggi untuk Pod hanya didukung pada cluster yang berada dalam Project yang diaktifkan dengan GKE Enterprise. Untuk memahami biaya yang berlaku untuk pengaktifan 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 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 initialize 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 cluster dan Pod. Untuk memfasilitasi kemampuan multi-jaringan dalam kumpulan node, Anda harus menyiapkan VPC yang sudah ada atau baru, yang mendukung jaringan jenis Layer 3 dan Device.

Untuk menyiapkan VPC tambahan, pertimbangkan persyaratan berikut:

  • Layer 3 dan Netdevice jenis jaringan:

    • Buat rentang sekunder jika Anda menggunakan jaringan jenis Layer 3.
    • Pastikan ukuran CIDR untuk rentang sekunder cukup besar guna memenuhi jumlah node dalam kumpulan node 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 jumlah Pod per node.
  • Persyaratan jaringan jenis Device: Membuat subnet reguler pada VPC. Anda tidak memerlukan subnet sekunder.

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

Buat 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 yang ingin Anda miliki.
  • Serupa dengan jaringan Pod default, jaringan Pod lainnya menggunakan alamat IP melalui penyediaan. Rentang alamat IP sekunder harus memiliki alamat IP dua kali lebih banyak per node dibandingkan 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. Misalnya, 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 alamat RFC 1918, pastikan rentangnya 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 alamat RFC 1918, pastikan rentangnya 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 data: Anda dapat mengaktifkan log aliran VPC untuk subnet saat Anda membuatnya atau nanti dengan mengeditnya.

    7. Klik Selesai.

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

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

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

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

    Aturan firewall allow-custom tidak otomatis diupdate jika Anda menambahkan subnet lain nanti. Jika memerlukan aturan firewall untuk subclass baru, untuk menambahkan aturan, Anda harus mengupdate konfigurasi firewall.

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

  11. Klik Create.

Buat 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 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 alamat RFC 1918, pastikan rentangnya 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 data: Anda dapat mengaktifkan log aliran VPC untuk subnet saat Anda membuatnya atau nanti dengan mengeditnya.

    6. Klik Selesai.

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

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

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

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

    Aturan firewall allow-custom tidak otomatis diupdate jika Anda menambahkan subnet lain nanti. Jika memerlukan aturan firewall untuk subclass baru, untuk menambahkan aturan, Anda harus mengupdate konfigurasi firewall.

  9. Di bagian Mode perutean dinamis, untuk jaringan VPC. Untuk informasi selengkapnya, lihat mode pemilihan rute dinamis. Anda dapat mengubah mode perutean dinamis 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 Definisi Resource Kustom (CRD) multijaringan 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 Standar 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, pada Cluster, klik Networking.

  5. Centang kotak Enable Dataplane V2.

  6. Pilih Enable Multi-Network.

  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

Buat 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 untuk memasang node kumpulan node.
  • 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 Cluster Kubernetes, klik cluster yang Anda buat.

  4. Di bagian atas halaman, untuk membuat kumpulan node, klik Tambahkan Kumpulan Node.

  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 total 4 VPC. Ada beberapa kelompok mesin yang dapat dipilih dan setiap jenis mesin disusun lebih lanjut menjadi seri mesin dan jenis mesin yang telah ditetapkan atau kustom dalam setiap rangkaiannya. Setiap jenis mesin ditagih secara berbeda. Untuk 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 Node Networks menampilkan jaringan VPC yang digunakan untuk membuat cluster. Anda harus menetapkan Jaringan Node tambahan yang berkorelasi dengan jenis Perangkat dan Jaringan VPC yang ditetapkan sebelumnya.

  10. Buat pengaitan kumpulan node:

    1. Untuk perangkat jenis Layer 3:
      1. Di bagian Jaringan Node, klik TAMBAHKAN JARINGAN node.
      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 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 Jaringan Node, klik TAMBAHKAN JARINGAN node.
      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 menyambungkan dua jaringan tambahan ke node, datapalane (jaringan jenis Layer 3) dan performa tinggi (jaringan jenis netdevice). Contoh ini mengasumsikan bahwa Anda telah 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 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: "l3-vpc"
    spec:
      vpc: "l3-vpc"
      vpcSubnet: "subnet-dp"
      podIPv4Ranges:
        rangeNames:
        - "sec-range-blue"
    

    Manifes ini menentukan objek GKENetworkParamSet bernama dataplane, menetapkan 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 Create 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, pilih cluster GKE yang telah mengaktifkan multijaringan dan GKE Dataplane V2.

  8. Klik BERIKUTNYA: REFERENSI JARINGAN VPC.

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

  10. Klik BERIKUTNYA: JENIS JARINGAN POD.

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

  12. Klik BERIKUTNYA: RENTANG KEDUA JARINGAN POD.

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

  14. Klik BERIKUTNYA: RUTE JARINGAN POD.

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

  16. 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 telah mengaktifkan multijaringan dan GKE Dataplane V2.

  7. Klik BERIKUTNYA: REFERENSI JARINGAN VPC.

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

  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 KEDUA 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 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 telah mengaktifkan multijaringan dan GKE Dataplane V2.

  7. Klik BERIKUTNYA: REFERENSI JARINGAN VPC.

  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), lalu masukkan Pod network name.

  11. Klik BERIKUTNYA: RENTANG KEDUA 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 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 Cluster Kubernetes, klik cluster yang Anda buat.

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

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

  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 untuk menyertakan 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":"l3-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":"l3-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, l3-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.

Saat Anda membuat Pod dengan spesifikasi multi-jaringan, komponen plane secara otomatis akan membuat konfigurasi antarmuka Pod dan menyimpannya di CR NetworkInterface. Buat satu CR NetworkInterface untuk setiap Network non-default yang ditentukan dalam spesifikasi Pod.

Misalnya, manifes berikut menampilkan detail dari manifes NetworkInterface:

apiVersion: v1
items:
-   apiVersion: networking.gke.io/v1
  kind: NetworkInterface
  metadata:
    labels:
      podName: samplepod
    name: "samplepod-c0b60cbe"
    namespace: default
  spec:
    networkName: "blue-network"
  status:
    gateway4: 172.16.1.1
    ipAddresses:
    -   172.16.1.2/32
    macAddress: 82:89:96:0b:92:54
    podName: samplepod

Manifes ini mencakup nama jaringan, alamat gateway, alamat IP yang ditetapkan, alamat MAC, dan nama Pod.

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   Scheduled               26m   default-scheduler  Successfully assigned default/samplepod to node-n1-04
  Warning  FailedCreatePodSandBox  26m   kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "e16c58a443ab70d671159509e36894b57493300ea21b6c24c14bdc412b0fdbe6": Unable to create endpoint: [PUT /endpoint/{id}][400] putEndpointIdInvalid  failed getting interface and network CR for pod "default/samplepod": failed creating interface CR default/samplepod-c0b60cbe: admission webhook "vnetworkinterface.networking.gke.io" denied the request: NetworkInterface.networking.gke.io "samplepod-c0b60cbe" is invalid: Spec.NetworkName: Internal error: failed to get the referenced network "sample-network": Network.networking.gke.io "sample-network" not found
...

Berikut ini beberapa alasan umum kegagalan pembuatan Pod:

  • Gagal menjadwalkan Pod karena persyaratan resource multi-jaringan tidak terpenuhi
  • Gagal mengidentifikasi jaringan yang ditentukan
  • Gagal mengonfigurasi dan membuat objek antarmuka Jaringan untuk Pod

Untuk memeriksa apakah Google Cloud telah membuat objek NetworkInterface di server API, jalankan perintah berikut:

kubectl get networkinterfaces.networking.gke.io -l podName=samplepod

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.

Outputnya mirip dengan hal 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 perlu membuat ulang resource GNP untuk memicu sinkronisasi ulang secara manual. Hal ini dilakukan untuk menghindari polling Google Cloud API tanpa batas.

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 selanjutnya