Halaman ini menjelaskan opsi penjadwal dan cara mengonfigurasi batasan penjadwalan pod default di Google Distributed Cloud software-only untuk cluster bare metal.
Google Distributed Cloud menyediakan sejumlah fitur Kubernetes standar yang dapat Anda gunakan untuk mengontrol penjadwalan pod, seperti:
Untuk mengetahui informasi tentang batasan penyebaran topologi pod di Kubernetes, lihat Kubernetes Scheduler di dokumentasi Kubernetes.
Sebelum memulai
Sebelum mengonfigurasi penyebaran pod default, pastikan setiap node di cluster Anda memiliki
label topologi yang benar. Anda dapat menggunakan Nodepool.Spec.TaintsAndLabels API
untuk menerapkan label. Memberi label node secara manual dengan kubectl label menawarkan lebih banyak fleksibilitas, tetapi memerlukan pemberian label secara manual saat Anda menambahkan node baru ke cluster.
Mengonfigurasi penjadwal kustom default {#:config-default}
Node label
Tambahkan label topologi ke file YAML cluster dan node pool Anda. Contoh berikut mengasumsikan dua kumpulan node pekerja berada di rak yang berbeda, dan node bidang kontrol berada di
rack1.apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: abm-cluster namespace: cluster-abm-cluster spec: controlPlane: nodePoolSpec: labels: topology.k8s.io/rack: rack1 --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: nodepool-rack1 namespace: cluster-abm-cluster spec: labels: topology.k8s.io/rack: rack1 --- apiVersion: baremetal.cluster.gke.io/v1 kind: NodePool metadata: name: nodepool-rack2 namespace: cluster-abm-cluster spec: labels: topology.k8s.io/rack: rack2Terapkan konfigurasi cluster yang telah diupdate.
bmctl update cluster -c CLUSTER_NAMEGanti
CLUSTER_NAMEdengan nama cluster Anda.Tunggu hingga label
topology.k8s.io/rackditerapkan ke semua node dalam cluster.
Mengaktifkan batasan penyebaran pod default
Tambahkan anotasi
preview.baremetal.cluster.gke.io/custom-scheduler-configuration:enableke file YAML cluster Anda.Tambahkan bagian
schedulerConfigurationdi bagiancluster.spec.controlPlanedalam file YAML cluster Anda.apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: abm-cluster namespace: cluster-abm-cluster annotations: preview.baremetal.cluster.gke.io/custom-scheduler-configuration: enable spec: controlPlane: schedulerConfiguration: defaultTopologySpreadConstraint: defaultConstraints: - topologyKey: topology.k8s.io/rack whenUnsatisfiable: DoNotSchedule maxSkew: 1 defaultingType: ListTerapkan konfigurasi cluster yang telah diupdate.
bmctl update cluster -c CLUSTER_NAMEGanti
CLUSTER_NAMEdengan nama cluster Anda.Tunggu hingga rekonsiliasi cluster selesai. Pantau
cluster.status.clusterStatehingga menampilkanRunning. Pekerjaancontrol-plane-updateberjalan untuk setiap node bidang kontrol selama proses ini.
Memverifikasi konfigurasi penyebaran pod
Buat deployment pengujian dengan lima replika.
Amati distribusi pod. Perbedaan jumlah pod di
nodepool-rack1dannodepool-rack2harus tepat satu.Verifikasi file
kube-scheduler-profile.configdi setiap node Bidang Kontrol. File, yang terletak di/etc/kubernetes/kube-scheduler-profile.config, harus berisi konfigurasi penyebaran topologi daricluster.spec.
Memecahkan masalah
Untuk mendiagnosis dan menyelesaikan masalah terkait penyebaran pod default, periksa hal berikut:
- Tinjau
BareMetalMachine.Status.ControlPlaneComponentsuntuk mengetahui status fitur. - Periksa log dari
cluster-operatordancap-controller-manageruntuk peristiwa yang relevan. - Jika pod statis
kube-schedulermengalami error, periksa apakah konfigurasi penjadwal sudah benar dalam file YAML cluster.
Langkah berikutnya
- Pelajari lebih lanjut batasan penyebaran topologi pod dalam dokumentasi Kubernetes.
- Lihat Memecahkan masalah penjadwal Kubernetes jika Anda mengalami masalah.