Dokumen ini membantu Anda memahami cara kerja batas pemasangan volume persisten untuk Persistent Disk dan Hyperdisk Compute Engine di node Google Kubernetes Engine (GKE). Untuk penjadwalan workload dan penentuan ukuran node pool yang tepat, Anda harus memahami jumlah maksimum volume persisten yang dapat dilampirkan ke node GKE. Jika Anda menginginkan kontrol yang lebih besar atas penjadwalan workload, terutama saat menggunakan beberapa jenis disk dengan batas pemasangan yang bervariasi pada satu instance, Anda dapat menggunakan label node untuk mengganti batas pemasangan default.
Dokumen ini ditujukan bagi spesialis Penyimpanan yang membuat dan mengalokasikan penyimpanan, serta administrator GKE yang mengelola penjadwalan workload dan penentuan ukuran kumpulan node. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang dirujuk dalam Google Cloud konten, lihat Peran dan tugas pengguna GKE Enterprise umum.
Ringkasan
Di GKE, saat Anda meminta PersistentVolume (PV) menggunakan driver CSI Persistent Disk Compute Engine (pd.csi.storage.gke.io
), volume penyimpanan blok akan disediakan dari layanan Persistent Disk Google Cloud .
Saat Anda mengaktifkan driver CSI Persistent Disk Compute Engine (PDCSI) pada cluster GKE, driver PDCSI menghitung dan melaporkan batas pemasangan volume persisten per node ke kubelet. Berdasarkan informasi ini, penjadwal Kubernetes membuat keputusan penjadwalan untuk membantu memastikan bahwa penjadwal tidak menjadwalkan terlalu banyak Pod yang memerlukan volume persisten pada node yang telah mencapai kapasitas lampirannya. Jika driver PDCSI melaporkan batas lampiran yang tidak akurat, khususnya jumlah yang lebih tinggi dari batas sebenarnya, Pod akan gagal dijadwalkan dan terjebak dalam status Pending
. Hal ini dapat terjadi pada jenis mesin generasi ketiga seperti C3, yang memiliki batas pemasangan yang berbeda untuk Hyperdisk dan Persistent Disk.
Memahami batas pemasangan volume persisten
Untuk generasi mesin yang lebih lama dari generasi keempat, driver PDCSI Compute Engine menetapkan batas pemasangan volume persisten gabungan sebanyak 128 disk (127 disk data ditambah satu disk boot) di semua jenis mesin. Batas pemasangan berlaku untuk gabungan volume Persistent Disk dan Hyperdisk. Untuk Hyperdisk, batas pemasangan ditentukan oleh jenis mesin Compute Engine yang mendasarinya, jumlah vCPU yang dimiliki mesin, dan jenis Hyperdisk tertentu.
Contoh:
- Untuk jenis mesin generasi keempat seperti C4, driver PDCSI secara akurat melaporkan batas pemasangan default ke Kubernetes yang dihitung berdasarkan jumlah vCPU node. Batas lampiran yang dilaporkan biasanya berada dalam rentang 8-128 volume persisten.
- Sebaliknya, untuk jenis mesin generasi ketiga seperti C3, driver PDCSI melaporkan batas pemasangan default ke Kubernetes sebagai batas tetap 128 disk, yang dapat menyebabkan kegagalan penjadwalan Pod karena batas sebenarnya dapat lebih rendah dari 128 berdasarkan jumlah vCPU.
Anda dapat mengganti batas lampiran default menggunakan label node.
Lihat referensi bermanfaat berikut dalam dokumentasi Compute Engine:
- Untuk mengetahui generasi mesin Compute Engine yang tersedia, lihat tabel di bagian Terminologi Compute Engine.
- Untuk mengetahui daftar jenis mesin dan jenis Persistent Disk yang kompatibel, lihat Dukungan seri mesin.
- Untuk mengetahui batas pemasangan Hyperdisk maksimum yang didukung berdasarkan jumlah CPU yang berbeda dari berbagai jenis Hyperdisk, lihat Volume Hyperdisk maksimum per VM.
- Untuk memahami cara batas pemasangan Hyperdisk diterapkan ke node, lihat Ringkasan batas per-VM Hyperdisk..
Mengganti batas pemasangan volume persisten default
Jika Anda memiliki persyaratan atau konfigurasi node tertentu yang mengharuskan Anda melampirkan sejumlah volume persisten tertentu ke node, Anda dapat mengganti batas lampiran volume persisten default untuk node pool menggunakan label node berikut: node-restriction.kubernetes.io/gke-volume-attach-limit-override: VALUE
.
Anda dapat menggunakan label node ini di versi GKE berikut:
1.32.4-gke.1698000
dan yang lebih baru.1.33.1-gke.1386000
dan yang lebih baru.
Kumpulan node baru
Untuk membuat node pool baru dengan batas lampiran volume persisten tertentu, jalankan perintah berikut:
gcloud container node-pools create NODE_POOL_NAME \
--cluster=CLUSTER_NAME \
--node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
Node pool yang ada
Untuk mengubah batas pemasangan volume persisten saat ini dari node pool yang ada, ikuti langkah-langkah berikut:
Perbarui batas lampiran pada node pool:
gcloud container node-pools update NODE_POOL_NAME \ --cluster=CLUSTER_NAME \ --node-labels=node-restriction.kubernetes.io/gke-volume-attach-limit-override=VALUE
Mulai ulang DaemonSet
pdcsi-node
:kubectl rollout restart ds pdcsi-node -n kube-system
Batas lampiran baru berlaku setelah Pods
pdcsi-node
dalam statusRunning
.
Ganti kode berikut:
NODE_POOL_NAME
: nama node pool yang ingin Anda buat atau perbarui.CLUSTER_NAME
: nama cluster untuk node pool yang ingin Anda buat atau perbarui.VALUE
: bilangan bulat antara0
dan127
untuk menentukan jumlah volume persisten baru yang dapat dilampirkan. Jika Anda menentukan nilai yang lebih tinggi dari 127, label node akan diabaikan dan driver PDCSI akan menggunakan batas pemasangan volume persisten default. Batas default adalah 128 untuk mesin generasi ketiga dan nilai berbasis jumlah vCPU untuk mesin generasi keempat.
Memverifikasi penggantian
Untuk memverifikasi apakah penggantian diterapkan dengan benar, periksa label node dan kapasitas node.
Dalam perintah berikut, ganti NODE_NAME
dengan nama node yang merupakan bagian dari node pool tertentu tempat Anda menerapkan label node penggantian.
Periksa label node:
kubectl get node NODE_NAME --show-labels
Output harus menyertakan label
node-restriction.kubernetes.io/gke-volume-attach-limit-override
.Periksa kapasitas node:
kubectl describe node NODE_NAME
Output harus menyertakan kapasitas
attachable-volumes-gce-pd
, yang harus cocok dengan nilai penggantian yang Anda tetapkan untuk node pool. Untuk mengetahui informasi selengkapnya, lihat Memeriksa resource yang dapat dialokasikan pada node.