ClusterCIDRConfig adalah resource pengalokasi CIDR kustom yang memungkinkan Anda
mengalokasikan lebih banyak rentang alamat IP untuk Pod secara dinamis.
Pengelolaan Alamat IP (IPAM) memungkinkan penggunaan subnet IP yang efisien dan menghindari tumpang-tindih dalam rentang alamat, yang mencegah konflik dan pemadaman jaringan.
Kubernetes menetapkan CIDR Pod per node, yang digunakan sebagai alamat IP untuk Pod
yang berjalan pada node tersebut.
Kubernetes NodeIPAM saat ini memiliki batasan berikut:
Semua CIDR Pod dialokasikan dari satu CIDR cluster. Anda harus menentukan seluruh rentang alamat IP yang memperhitungkan cluster terbesar pada saat pembuatan cluster. Keterbatasan ini dapat membuang-buang alamat IP.
Jika ukuran cluster bertambah, akan sulit untuk menambahkan alamat IP lainnya.
CIDR {i>Cluster<i} adalah satu
rentang yang besar. Mungkin sulit untuk menemukan
blok alamat IP yang berdekatan yang memenuhi kebutuhan cluster.
Setiap node mendapatkan rentang IP berukuran tetap dalam cluster. Jika node memiliki
ukuran dan kapasitas yang berbeda, Anda tidak dapat mengalokasikan rentang Pod yang lebih besar ke
node tertentu dengan kapasitas lebih besar dan rentang yang lebih kecil ke node dengan kapasitas
yang lebih rendah. Ini membuang banyak alamat IP. Untuk cluster besar dengan banyak node, pemborosan ini akan bertambah di semua node dalam cluster.
Dengan fungsi ClusterCIDRConfig, Anda dapat menghindari penetapan blok CIDR besar
ke cluster, memetakan ukuran cluster ke skala Pod, sehingga
mempertahankan alamat IP. Anda dapat menyimpan alamat IP menggunakan ClusterCIDRConfigs
dengan berbagai kombinasi CIDR dan perNodeMaskSize. Resource ClusterCIDRConfig
mendukung hal berikut:
Beberapa blok CIDR IP yang tidak berdekatan untuk CIDR cluster pada tingkat yang
lebih terperinci
Afinitas node blok CIDR
Ukuran blok berbeda yang dialokasikan ke node
GKE di Bare Metal menggunakan fungsi ClusterCIDRConfig pada fitur berikut:
Cluster.spec.clusterNetwork.pods.cidrBlocks adalah kolom opsional dan tidak
ditentukan secara default. Anda harus menentukannya jika salah satu fitur dari daftar
sebelumnya belum menentukannya. Misalnya, hal ini diperlukan saat cluster dibuat dalam mode pulau IPv4 dan harus ditentukan karena digunakan sebagai CIDR pemilihan rute native.
Tabel berikut mencantumkan penggunaan perilaku kolom Cluster.spec.clusterNetwork.pods.cidrBlocks
ClusterCIDRConfig untuk berbagai
mode jaringan.
Cluster.spec.clusterNetwork.pods.cidrBlocks sepenuhnya diabaikan dan dapat dilewati. Pengguna harus secara eksplisit menentukan ClusterCIDRConfig (per node, per nodepool, dan/atau per cluster).
Tumpukan ganda (Pulau IPv4, IPv4 Datar)
Tentukan CIDR IPv4.
Jangan tentukan CIDR IPv6 di Cluster.spec.clusterNetwork.pods.cidrBlocks.
Menentukan ClusterCIDRConfigs dengan CIDR IPv4 dan IPv6. CIDR IPv4 yang dikonfigurasi di semua ClusterCIDRConfig harus sama dengan CIDR IPv4 dari Cluster.spec.clusterNetwork.pods.cidrBlocks, termasuk nilai PerNodeMask untuk IPv4. Untuk informasi selengkapnya tentang ClusterCIDRConfig dan contoh penggunaannya, lihat Contoh: Dualstack (IPv4 island, IPv6 Flat)
Dual-stack (IPv4 Rata, IPv6 Datar)
Anda dapat melewati Cluster.spec.clusterNetwork.pods.cidrBlocks karena pesan ini sepenuhnya diabaikan. Anda harus secara eksplisit menentukan ClusterCIDRConfigs (per-node, per-nodepool, dan/atau per-cluster) dengan CIDR IPv4 dan IPv6.
Saat Anda mengonfigurasi resource pengalokasi CIDR kustom ClusterCIDRConfig,
pertimbangkan poin-poin berikut:
Penetapan CIDR pod dari ClusterCIDRConfig tertentu ke node didasarkan pada pemilih label. Hal ini mirip dengan mekanisme nodeSelector yang digunakan untuk
menjadwalkan Pod pada node.
Anda harus mengonfigurasi ClusterCIDRConfig selama proses pembuatan cluster di file YAML konfigurasi cluster. Setelah menentukan ClusterCIDRConfigs,
Anda tidak dapat mengubah nilai tersebut di lain waktu.
Anda dapat menentukan beberapa ClusterCIDRConfig dengan CIDR yang tumpang-tindih.
Jika tidak ditemukan ClusterCIDRConfig yang cocok untuk sebuah node, node tersebut tetap dalam status NotReady, sampai ClusterCIDRConfig dengan label yang cocok dibuat.
Jika pencocokan terbaik ClusterCIDRConfig tidak memiliki lebih banyak CIDR yang tersedia untuk
alokasi, CIDR terbaik berikutnya akan dipilih dan CIDR Pod dialokasikan
dari CIDR yang tersedia.
Untuk model dual-stack,
jika Anda ingin menetapkan CIDR Pod dual-stack ke node, lakukan hal berikut:
Mengonfigurasi CIDR IPv4 dan IPv6 di ClusterCIDRConfig.
Pastikan semua ClusterCIDRConfig memiliki CIDR DualStack, jika beberapa
ClusterCIDRConfig dikonfigurasi.
Pastikan CIDR IPv4 dan IPv6 yang dikonfigurasi memiliki jumlah alamat IP yang dapat dialokasikan per node yang sama.
Jadi, 32 - 24 == 128 - 120, karena selisihnya adalah 8.
Beberapa ClusterCIDRConfig dapat mencocokkan label dari nodeSelector ke
label node.
Aturan penetapan ClusterCIDRConfig
Untuk menentukan ClusterCIDRConfig yang digunakan untuk menetapkan CIDR Pod ke node saat ini, gunakan aturan pemecahan masalah berikut. Terapkan aturan ini dalam urutan yang ditentukan. Terapkan aturan berikutnya hanya jika nilai yang sama tidak rusak oleh aturan
sebelumnya.
Pilih ClusterCIDRConfig yang NodeSelector-nya cocok dengan label paling banyak di
Node. Misalnya, {'node.kubernetes.io/instance-type':'medium', 'rack':
'rack1'} (Match Count: 2) dipilih sebelum
{'node.kubernetes.io/instance-type': 'medium'}. (Match Count: 1).
Pilih ClusterCIDRConfig dengan CIDR Pod yang dapat dialokasikan paling sedikit. Misalnya, {CIDR: "10.0.0.0/16", PerNodeMaskSize: "16"} (1 possible Pod
CIDR) dipilih sebelum {CIDR: "192.168.0.0/20", PerNodeMaskSize: "22"} (4
possible Pod CIDRs).
Pilih ClusterCIDRConfig yang PerNodeMaskSize-nya memiliki alamat IP paling sedikit.
Misalnya, 27 (2^(32-27)= 32 alamat IP) dipilih sebelum 25 (2^(32-25)=128 alamat IP).
Pilih ClusterCIDRConfig yang label NodeSelector yang cocok memiliki nilai alfanumerik yang lebih rendah. Misalnya, {'kubernetes.io/hostname': 'node-1'}
dipilih daripada {'node.kubernetes.io/instance-type':'medium'}.
Pilih ClusterCIDRConfig yang IP CIDR-nya memiliki nilai lebih rendah. Terlepas dari apakah konfigurasinya adalah konfigurasi IPv4 atau DualStack, hanya CIDR IPv4 yang akan dibandingkan. Misalnya, {CIDR: "10.0.0.0/16"} is picked over
{CIDR: "192.168.0.0/16"}.
Contoh konfigurasi
Bagian ini mencantumkan contoh konfigurasi untuk Cluster dan ClusterCIDRConfig untuk semua mode jaringan.
Contoh: Mode Pulau IPv4 (Default)
Konfigurasi Cluster (Default)
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: bm-cluster
namespace: cluster-default
spec:
...
clusterNetwork:
# Pods specify the IP ranges from which pod networks are allocated.
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/12
... (other cluster config omitted)
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2024-01-04 UTC."],[],[]]