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:
- Dukungan multi-jaringan untuk Pod
- Dukungan alamat IP persisten untuk Pod (Pratinjau)
- Jaringan multi-jaringan kebijakan (Pratinjau)
- Dukungan Pengarahan Layanan untuk Pod (Pratinjau)
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:
- Menyiapkan VPC tambahan, subnet (jaringan node), dan rentang sekunder (jaringan Pod).
- Membuat cluster GKE dengan multi-jaringan menggunakan perintah Google Cloud CLI.
- Membuat node pool GKE baru yang terhubung ke jaringan node dan jaringan Pod tambahan menggunakan perintah Google Cloud CLI.
- Buat jaringan Pod dan referensikan VPC, subnet, dan rentang sekunder yang benar di multi-jaringan menggunakan Kubernetes API.
- 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
danNetdevice
:- 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.
- Buat rentang sekunder jika Anda menggunakan jaringan jenis
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
Di konsol Google Cloud, buka halaman jaringan VPC.
Klik Create VPC network.
Di kolom Nama, masukkan nama jaringan. Contoh,
l3-vpc
.Dari drop-down Maximum transmisi unit (MTU), pilih nilai MTU yang sesuai.
Pada bagian Subnet creation mode, pilih Custom.
Klik ADD SUBNET.
Di bagian New subnet tentukan parameter konfigurasi berikut untuk subnet:
Berikan Nama. Contoh,
l3-subnet
.Pilih Region.
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.
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.
Private Google access: Anda dapat mengaktifkan Akses Google Pribadi untuk subnet saat membuatnya atau nanti dengan mengeditnya.
Log aliran traffic: Anda dapat mengaktifkan alur VPC log untuk subnet saat Anda membuatnya atau nanti dengan mengeditnya.
Klik Done.
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.
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.Di bagian Mode pemilihan rute dinamis, untuk jaringan VPC. Untuk informasi selengkapnya, lihat perutean dinamis mode. Anda dapat mengubah pemilihan rute dinamis mode nanti.
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
Di konsol Google Cloud, buka halaman jaringan VPC.
Klik Create VPC network.
Di kolom Nama, masukkan nama jaringan. Misalnya,
netdevice-vpc
ataudpdk-vpc
.Dari drop-down Maximum transmisi unit (MTU), pilih nilai MTU yang sesuai.
Pada bagian Subnet creation mode, pilih Custom.
Di bagian New subnet tentukan parameter konfigurasi berikut untuk subnet:
Berikan Nama. Misalnya
netdevice-subnet
ataudpdk-vpc
.Pilih Region.
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.
Private Google Access: Pilih apakah Akses Google Pribadi diaktifkan untuk subnetwork saat Anda membuatnya atau di lain waktu dengan mengeditnya.
Log aliran traffic: Anda dapat mengaktifkan alur VPC log untuk subnet saat Anda membuatnya atau nanti dengan mengeditnya.
Klik Done.
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.
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.Di bagian Mode pemilihan rute dinamis, untuk jaringan VPC. Untuk informasi selengkapnya, lihat perutean dinamis mode. Anda dapat mengubah pemilihan rute dinamis mode nanti.
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
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Klik add_box Create.
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.
Dari panel navigasi, di bagian Cluster, klik Networking.
Pilih kotak centang Enable Dataplane V2.
Pilih Aktifkan Multi-Jaringan.
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 jenisLayer 3
, tentukan flagadditional-pod-network
yang menentukan jaringan Pod, yang diekspos di dalam cluster GKE sebagai objekNetwork
. 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 jenisDevice
. Argumen ini menentukan nilai kunci berikut:subnetwork
,pod-ipv4-range
, danmax-pods-per-node
. Saat menggunakan--additional-pod-network
, Anda harus memberikan nilaipod-ipv4-range
danmax-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 nilaimax-pods-per-node
pada node pool.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Dari panel navigasi, klik Clusters.
Di bagian Cluster Kubernetes, klik cluster yang Anda buat.
Di bagian atas halaman, untuk membuat kumpulan node, klik add_box Add Node Pool.
Di bagian Node pool details, selesaikan tindakan berikut:
- Masukkan Nama untuk node pool.
- Masukkan Jumlah node yang akan dibuat di node pool.
Dari panel navigasi, di bagian Node Pools, klik Nodes.
Dari menu drop-down Image type, pilih Image node Container-Optimized OS with containerd (cos_containerd).
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.Dari panel navigasi, pilih Networking.
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.
Buat pengaitan kumpulan node:
- Untuk perangkat jenis
Layer 3
:- Di bagian Node Networks, klik ADD A NODE NETWORK.
- Dari menu drop-down jaringan, pilih VPC yang mendukung perangkat jenis Layer 3.
- Pilih subnet yang dibuat untuk VPC
Layer 3
. - Di bagian Rentang alamat IP Pod Alias, klik Add Pod IP address range.
- Pilih Secondary subnet dan tunjukkan Max number of Pods per node.
- Pilih Selesai.
- Untuk perangkat jenis
Netdevice
danDPDK
:- Di bagian Node Networks, klik ADD A NODE NETWORK.
- Dari menu drop-down jaringan, pilih VPC yang mendukung perangkat jenis
Netdevice
atauDPDK
. - Pilih subnet yang dibuat untuk VPC
Netdevice
atauDPDK
. - Pilih Selesai.
- Untuk perangkat jenis
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:
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
bernamablue-network
dari jenisLayer 3
. ObjekNetwork
merujuk ke objekGKENetworkParamSet
yang disebutl3-vpc
, yang mengaitkan jaringan dengan resource Compute Engine.Terapkan manifes ke cluster:
kubectl apply -f blue-network.yaml
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
bernamadataplane
, kumpulan nama VPC sebagaidataplane
, nama subnet sebagaisubnet-dp
, dan rentang alamat IPv4 sekunder untuk Pod yang disebutsec-range-blue
.Terapkan manifes ke cluster:
kubectl apply -f dataplane.yaml
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Dari panel navigasi, klik Network Function Optimizer.
Klik Enable GKE Enterprise.
Di bagian atas halaman, klik add_box Buat untuk membuat jaringan Pod.
Di bagian Sebelum memulai, verifikasi detailnya.
Klik BERIKUTNYA: LOKASI JARINGAN POD.
Di bagian Pod network location, dari drop-down Cluster, memilih cluster GKE yang memiliki jaringan multi-jaringan dan GKE Dataplane V2 diaktifkan.
Klik BERIKUTNYA: REFERENSI JARINGAN VPC.
Di bagian Referensi jaringan VPC, dari Referensi jaringan VPC pilih drop-down, pilih jaringan VPC yang digunakan untuk
Layer 3
Pod multinic.Klik BERIKUTNYA: JENIS JARINGAN POD.
Di bagian Pod network type, pilih L3, lalu masukkan Pod nama jaringan.
Klik BERIKUTNYA: RENTANG SEKITAS JARINGAN POD.
Di bagian Pod network secondary range, masukkan kolom Secondary rentang.
Klik BERIKUTNYA: RUTE JARINGAN POD.
Di bagian Pod network routes, untuk menentukan Custom routes, pilih ADD ROUTE.
Klik CREATE POD NETWORK.
Mengonfigurasi jaringan DPDK
YAML
Untuk VPC DPDK, buat objek Network
dan GKENetworkParamSet
.
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
bernamadpdk-network
dengan jenisDevice
. ResourceNetwork
mereferensikan objekGKENetworkParamSet
yang disebutdpdk
untuk konfigurasinya.Terapkan manifes ke cluster:
kubectl apply -f dpdk-network.yaml
Untuk objek
GKENetworkParamSet
, simpan manifes berikut sebagaidpdk.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
bernamadpdk
, menetapkan nama VPC sebagaidpdk
, nama subnet sebagaisubnet-dpdk
, dan nama deviceMode sebagaiDPDK-VFIO
.Terapkan manifes ke cluster:
kubectl apply -f dpdk-network.yaml
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Dari panel navigasi, klik Network Function Optimizer.
Di bagian atas halaman, klik add_box Buat untuk membuat jaringan Pod.
Di bagian Sebelum memulai, verifikasi detailnya.
Klik BERIKUTNYA: LOKASI JARINGAN POD.
Di bagian Pod network location, dari drop-down Cluster, memilih cluster GKE yang memiliki jaringan multi-jaringan dan GKE Dataplane V2 diaktifkan.
Klik BERIKUTNYA: REFERENSI JARINGAN VPC.
Di bagian Referensi jaringan VPC, dari Referensi jaringan VPC pilih jaringan VPC yang digunakan untuk dpdk multinic Pods.
Klik BERIKUTNYA: JENIS JARINGAN POD.
Di bagian Pod network type, pilih DPDK-VFIO (Device) dan masukkan nama jaringan Pod.
Klik BERIKUTNYA: RENTANG SEKITAS JARINGAN POD. Bagian rentang sekunder jaringan Pod tidak akan tersedia
Klik BERIKUTNYA: RUTE JARINGAN POD. Di bagian rute jaringan Pod, pilih ADD ROUTE untuk menentukan rute kustom
Klik CREATE POD NETWORK.
Mengonfigurasi jaringan netdevice
Untuk VPC netdevice
, buat Network
dan GKENetworkParamSet
objek terstruktur dalam jumlah besar.
YAML
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
bernamanetdevice-network
dengan jenisDevice
. Class ini merujuk ke objekGKENetworkParamSet
bernamanetdevice
.Terapkan manifes ke cluster:
kubectl apply -f netdevice-network.yaml
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
bernamanetdevice
, kumpulan nama VPC sebagainetdevice
, nama subnet sebagaisubnet-netdevice
, dan menentukan mode perangkat sebagaiNetDevice
.Terapkan manifes ke cluster:
kubectl apply -f netdevice.yaml
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Dari panel navigasi, klik Network Function Optimizer.
Di bagian atas halaman, klik add_box Buat untuk membuat jaringan Pod.
Di bagian Sebelum memulai, verifikasi detailnya.
Klik BERIKUTNYA: LOKASI JARINGAN POD.
Di bagian Pod network location, dari drop-down Cluster, memilih cluster GKE yang memiliki jaringan multi-jaringan dan GKE Dataplane V2 diaktifkan.
Klik BERIKUTNYA: REFERENSI JARINGAN VPC.
Di bagian Referensi jaringan VPC, dari Referensi jaringan VPC pilih jaringan VPC yang digunakan untuk Pod multinic netdevice.
Klik BERIKUTNYA: JENIS JARINGAN POD.
Di bagian Pod network type, pilih NetDevice (Device) dan masukkan nama jaringan Pod.
Klik BERIKUTNYA: RENTANG SEKITAS JARINGAN POD. Bagian rentang sekunder jaringan Pod tidak akan tersedia
Klik BERIKUTNYA: RUTE JARINGAN POD. Di bagian rute jaringan Pod, untuk menentukan rute kustom, pilih ADD ROUTE.
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
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 jenisLayer 3
dan rute kustom "10.0.2.0/28" melalui antarmuka Jaringan tersebut.Terapkan manifes ke cluster:
kubectl apply -f red-network.yaml
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Klik add_box Create.
Dari panel navigasi, klik Network Function Optimizer.
Di bagian Cluster Kubernetes, klik cluster yang Anda buat.
Di bagian atas halaman, klik add_box Create untuk membuat jaringan Pod.
Di bagian Rute jaringan pod, tentukan Rute kustom.
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.
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
daneth1
, yang masing-masing terkait dengan jaringandefault
danblue-network
.Terapkan manifes ke cluster:
kubectl apply -f sample-l3-pod.yaml
Menghubungkan Pod dengan beberapa jaringan
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
, daneth2
yang terkait dengandefault
,blue-network
, dannetdevice
.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:
- Pastikan node adalah bagian suatu kumpulan yang dikonfigurasi untuk multi-jaringan.
- Periksa antarmuka node untuk melihat apakah node tersebut memiliki antarmuka untuk jaringan yang Anda konfigurasi.
- Jika node tidak memiliki status jaringan dan hanya memiliki satu antarmuka jaringan, Anda masih harus membuat node pool menggunakan multi-jaringan yang diaktifkan.
- Jika node Anda berisi antarmuka untuk jaringan yang dikonfigurasi, tetapi
tidak terlihat dalam anotasi status jaringan, periksa resource
Network
danGKENetworkParamSet
(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 parameterRefGKENetworkParamSet
dan kondisi tidak muncul, pastikan nama, jenis, dan grup cocok dengan resource GNP yang ada dalam cluster Anda.