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:
- Dukungan multi-jaringan untuk Pod
- Dukungan alamat IP persisten untuk Pod
- Kebijakan jaringan multi-jaringan (Pratinjau)
- Dukungan Service Steering untuk Pod (Pratinjau)
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:
- 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.
- Membuat jaringan Pod dan mereferensikan VPC, subnet, dan rentang sekunder yang benar di objek 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. 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
.
- Tinjau persyaratan dan batasan.
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
danNetdevice
:- 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.
- Buat rentang sekunder jika Anda menggunakan jaringan jenis
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
Di konsol Google Cloud, buka halaman jaringan VPC.
Klik Create VPC network.
Di kolom Name, masukkan nama jaringan. Contoh,
l3-vpc
.Dari dropdown Maximum transmission unit (MTU), pilih nilai MTU yang sesuai.
Pada bagian Subnet creation mode, pilih Custom.
Klik TAMBAHKAN 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 tersebut tidak bertentangan dengan konfigurasi yang ada. Untuk informasi selengkapnya, lihat Rentang subnet IPv4.
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.
Private Google access: Anda dapat mengaktifkan Akses Google Pribadi untuk subnet saat membuatnya atau nanti dengan mengeditnya.
Flow logs: Anda dapat mengaktifkan log aliran VPC untuk subnet saat Anda membuatnya atau di lain waktu dengan mengeditnya.
Klik Done.
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.
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.Di bagian Dynamic routing mode, untuk jaringan VPC. Untuk informasi selengkapnya, lihat mode pemilihan rute dinamis. Anda dapat mengubah mode pemilihan rute dinamis 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 Name, masukkan nama jaringan. Misalnya,
netdevice-vpc
ataudpdk-vpc
.Dari dropdown Maximum transmission 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 tersebut 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.
Flow logs: Anda dapat mengaktifkan log aliran VPC untuk subnet saat Anda membuatnya atau di lain waktu dengan mengeditnya.
Klik Done.
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.
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.Di bagian Dynamic routing mode, untuk jaringan VPC. Untuk informasi selengkapnya, lihat mode pemilihan rute dinamis. Anda dapat mengubah mode pemilihan rute dinamis nanti.
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
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Klik add_box Create.
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.
Dari panel navigasi, di bagian Cluster, klik Networking.
Centang kotak Aktifkan Dataplane V2.
Pilih Aktifkan Multi-Jaringan.
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 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 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 nilaimax-pods-per-node
pada node pool.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Dari panel navigasi, klik Clusters.
Di bagian Kubernetes clusters, klik cluster yang Anda buat.
Di bagian atas halaman, untuk membuat node pool, 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 Container-Optimized OS with containerd (cos_containerd) node image.
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.Dari panel navigasi, pilih Networking.
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.
Membuat pengaitan node pool:
- 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 Lapisan 3.
- Pilih subnet yang dibuat untuk VPC
Layer 3
. - Di bagian Rentang alamat IP Pod Alias, klik Tambahkan rentang alamat IP Pod.
- Pilih Subnet sekunder dan tunjukkan Jumlah maksimum Pod 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 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
:
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
mereferensikan 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: "dataplane" spec: vpc: "l3-vpc" vpcSubnet: "subnet-dp" podIPv4Ranges: rangeNames: - "sec-range-blue"
Manifes ini menentukan objek
GKENetworkParamSet
bernamadataplane
, menetapkan nama VPC sebagail3-vpc
, 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.
Di bagian atas halaman, klik add_box Create untuk membuat jaringan Pod.
Di bagian Sebelum memulai, verifikasi detailnya.
Klik BERIKUTNYA: LOKASI JARINGAN POD.
Di bagian Pod network location, dari drop-down Cluster, pilih cluster GKE yang mengaktifkan multi-jaringan dan GKE Dataplane V2.
Klik BERIKUTNYA: VPC NETWORK REFERENCE.
Di bagian VPC network reference, dari drop-down VPC network reference, pilih jaringan VPC yang digunakan untuk Pod multinic
Layer 3
.Klik BERIKUTNYA: JENIS JARINGAN POD.
Di bagian Pod network type, pilih L3 dan masukkan Pod network name.
Klik BERIKUTNYA: Rentang Sekunder Jaringan POD.
Di bagian Rentang sekunder jaringan pod, masukkan Rentang sekunder.
Klik BERIKUTNYA: POD NETWORK ROUTES.
Di bagian Pod network routes, untuk menentukan Custom routes, pilih ADD ROUTE.
Klik BUAT JARINGAN POD.
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 Create untuk membuat jaringan Pod.
Di bagian Sebelum memulai, verifikasi detailnya.
Klik BERIKUTNYA: LOKASI JARINGAN POD.
Di bagian Pod network location, dari drop-down Cluster, pilih cluster GKE yang mengaktifkan multi-jaringan dan GKE Dataplane V2.
Klik BERIKUTNYA: VPC NETWORK REFERENCE.
Di bagian VPC network reference, dari drop-down VPC network reference, pilih jaringan VPC yang digunakan untuk Pod multinic dpdk.
Klik BERIKUTNYA: JENIS JARINGAN POD.
Di bagian Pod network type, pilih DPDK-VFIO (Device) dan masukkan Pod network name.
Klik BERIKUTNYA: Rentang Sekunder Jaringan POD. Bagian rentang sekunder jaringan Pod tidak akan tersedia
Klik BERIKUTNYA: POD NETWORK ROUTES. Di bagian rute jaringan Pod, pilih ADD ROUTE untuk menentukan rute kustom
Klik BUAT JARINGAN POD.
Mengonfigurasi jaringan netdevice
Untuk VPC netdevice
, buat objek Network
dan GKENetworkParamSet
.
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
, menetapkan 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 Create untuk membuat jaringan Pod.
Di bagian Sebelum memulai, verifikasi detailnya.
Klik BERIKUTNYA: LOKASI JARINGAN POD.
Di bagian Pod network location, dari drop-down Cluster, pilih cluster GKE yang mengaktifkan multi-jaringan dan GKE Dataplane V2.
Klik BERIKUTNYA: VPC NETWORK REFERENCE.
Di bagian VPC network reference, dari drop-down VPC network reference, pilih jaringan VPC yang digunakan untuk Pod multinic netdevice.
Klik BERIKUTNYA: JENIS JARINGAN POD.
Di bagian Pod network type, pilih NetDevice (Device) dan masukkan Pod network name.
Klik BERIKUTNYA: RANGE SEKUNDER JARINGAN POD. Bagian rentang sekunder jaringan Pod tidak akan tersedia
Klik BERIKUTNYA: POD NETWORK ROUTES. Di bagian rute jaringan Pod, untuk menentukan rute kustom, pilih ADD ROUTE.
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
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 Kubernetes clusters, klik cluster yang Anda buat.
Di bagian atas halaman, klik add_box Create untuk membuat jaringan Pod.
Di bagian Pod network routes, tentukan Custom routes.
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.
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 antarmuka jaringan,eth0
,eth1
, daneth2
yang masing-masing terkait dengan jaringandefault
,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. 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 parameterRefGKENetworkParamSet
dan kondisi tidak muncul, pastikan nama, jenis, dan grup cocok dengan resource GNP yang ada dalam cluster Anda.