Mengonfigurasi penjadwalan

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

  1. 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: rack2
    
  2. Terapkan konfigurasi cluster yang telah diupdate.

    bmctl update cluster -c CLUSTER_NAME
    

    Ganti CLUSTER_NAME dengan nama cluster Anda.

  3. Tunggu hingga label topology.k8s.io/rack diterapkan ke semua node dalam cluster.

Mengaktifkan batasan penyebaran pod default

  1. Tambahkan anotasi preview.baremetal.cluster.gke.io/custom-scheduler-configuration:enable ke file YAML cluster Anda.

  2. Tambahkan bagian schedulerConfiguration di bagian cluster.spec.controlPlane dalam 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: List
    
  3. Terapkan konfigurasi cluster yang telah diupdate.

    bmctl update cluster -c CLUSTER_NAME
    

    Ganti CLUSTER_NAME dengan nama cluster Anda.

  4. Tunggu hingga rekonsiliasi cluster selesai. Pantau cluster.status.clusterState hingga menampilkan Running. Pekerjaan control-plane-update berjalan untuk setiap node bidang kontrol selama proses ini.

Memverifikasi konfigurasi penyebaran pod

  1. Buat deployment pengujian dengan lima replika.

  2. Amati distribusi pod. Perbedaan jumlah pod di nodepool-rack1 dan nodepool-rack2 harus tepat satu.

  3. Verifikasi file kube-scheduler-profile.config di setiap node Bidang Kontrol. File, yang terletak di /etc/kubernetes/kube-scheduler-profile.config, harus berisi konfigurasi penyebaran topologi dari cluster.spec.

Memecahkan masalah

Untuk mendiagnosis dan menyelesaikan masalah terkait penyebaran pod default, periksa hal berikut:

  1. Tinjau BareMetalMachine.Status.ControlPlaneComponents untuk mengetahui status fitur.
  2. Periksa log dari cluster-operator dan cap-controller-manager untuk peristiwa yang relevan.
  3. Jika pod statis kube-scheduler mengalami error, periksa apakah konfigurasi penjadwal sudah benar dalam file YAML cluster.

Langkah berikutnya