All Products
Search
Document Center

Container Service for Kubernetes:Tambahkan pemeriksaan admission kustom ke ACK Kube Queue

Last Updated:Jun 21, 2026

Secara default, ACK Kube Queue hanya memeriksa kuota Max yang didefinisikan dalam ElasticQuotaTree. Setelah workload lolos pemeriksaan kuota, workload tersebut diproses oleh penjadwal. Jika Anda memerlukan logika validasi dequeue yang lebih kompleks, Anda dapat menggunakan mekanisme AdmissionCheck. AdmissionCheck adalah mekanisme eksternal yang dapat dipasang (pluggable) yang disediakan oleh ACK Kube Queue untuk memberikan validasi tambahan sebelum sebuah workload didequeue dari antrian, sehingga hanya workload yang memenuhi syarat yang dijadwalkan.

Cara kerja

Setelah AdmissionCheck ditambahkan ke kluster, ACK Kube Queue tidak langsung mengatur QueueUnit ke fase Dequeued setelah lolos pemeriksaan kuota. Sebagai gantinya, QueueUnit diatur ke fase Reserved, dan entri admissionChecks dengan status Pending ditambahkan ke bidang status QueueUnit.

apiVersion: scheduling.x-k8s.io/v1alpha1
kind: QueueUnit
metadata:
  ...
spec:
  ...
status:
  admissionChecks:
  - lastTransitionTime: "2025-01-17T01:46:58Z"
    message: ""
    name: sample-prov
    state: Pending
  lastUpdateTime: "2025-01-17T01:46:58Z"
  message: Pencadangan sumber daya berhasil, menunggu pemeriksaan penerimaan siap
  phase: Reserved
  podState: {}

Setiap AdmissionCheckController memeriksa admissionChecks-nya masing-masing. Setelah pemeriksaan berhasil, controller tersebut mengatur state dalam admissionChecks menjadi Ready. Ketika semua AdmissionCheck berada dalam status Ready, QueueUnit masuk ke status Dequeued.

apiVersion: scheduling.x-k8s.io/v1alpha1
kind: QueueUnit
metadata:
  ...
spec:
  ...
status:
  admissionChecks:
  - lastTransitionTime: "2025-01-17T01:47:58Z"
    message: Succeeded
    name: sample-prov
    state: Ready
  lastUpdateTime: "2025-01-17T01:50:45Z"
    message: Dequeued
  phase: Dequeued
  podState:
    pending: 1

Konfigurasi AdmissionCheck

Rincian konfigurasi

Administrator harus mengonfigurasi komponen-komponen berikut di kluster.

  • Satu controller: AdmissionCheckController (ACController) kustom.

    AdmissionCheckController adalah controller yang Anda kelola untuk melakukan pemeriksaan kustom. Dengan mendengarkan bidang admissionChecks di status QueueUnit, controller dapat mengidentifikasi QueueUnit yang memerlukan pemeriksaan kustom. Controller menentukan apakah perlu memeriksa entri admissionChecks dengan memverifikasi apakah nilai controllerName dalam AdmissionCheck sesuai dengan name pada bidang admissionChecks di status QueueUnit. Setelah pemeriksaan selesai, controller memperbarui status entri admissionChecks yang sesuai di status QueueUnit menjadi Ready atau Rejected berdasarkan hasilnya.

  • Dua Custom Resource Definition (CRD):

    • AdmissionCheck

      CRD ini diinstal secara otomatis bersama ACK Kube Queue. Untuk mendefinisikan logika pemeriksaan kustom, Anda membuat custom resource (CR) yang menentukan controller yang menangani pemeriksaan tersebut dan mereferensikan parameternya.

      Contoh berikut menunjukkan manifes AdmissionCheck dan bidang-bidang yang tersedia.

      apiVersion: kueue.x-k8s.io/v1beta1
      kind: AdmissionCheck
      metadata:
        name: sample-prov
      spec:
        controllerName: provisioning-request-admission-controller
        parameters:
          apiGroup: kueue.x-k8s.io
          kind: ProvisioningRequestConfig
          name: prov-test-config

      Parameter

      Type

      Deskripsi

      controllerName

      string

      Menentukan nama controller yang memantau dan memproses pemeriksaan admission ini.

      parameters

      struct

      Jenis struct yang terdiri dari tiga bidang string apiGroup, kind, dan name, yang menjelaskan parameter yang terkait dengan AdmissionCheck.

    • Parameter pemeriksaan kustom

      Resource AdmissionCheck menggunakan bidang parameters untuk mereferensikan objek parameter kustom. Controller membaca parameter ini untuk menjalankan logika pemeriksaan tertentu. Dengan menggunakan parameter berbeda untuk setiap pemeriksaan, satu controller dapat melakukan berbagai jenis pemeriksaan. Anda harus menginstal CRD dan membuat CR untuk parameter kustom tersebut.

  • Item konfigurasi dalam antrian:

    Setelah Anda men-deploy AdmissionCheckController, AdmissionCheck, dan parameter kustom, kluster Anda siap melakukan pemeriksaan kustom. Anda kemudian dapat mengaktifkan pemeriksaan kustom untuk antrian tertentu dengan menambahkannya ke konfigurasi antrian tersebut.

Contoh konfigurasi

Contoh ini menunjukkan cara mengonfigurasi AdmissionCheck menggunakan ProvisioningRequestAdmissionCheckController.

1. Aktifkan controller ProvisioningRequestAdmissionCheck

ProvisioningRequestAdmissionCheckController adalah controller yang disediakan oleh ACK Kube Queue yang bekerja dengan ProvisioningRequest. Anda dapat mengaktifkan ProvisioningRequestAdmissionCheck dengan mengatur .Values.admissionCheckController.enabled ke true saat menginstal Helm chart untuk ACK Kube Queue. Setelah diaktifkan, ProvisioningRequestAdmissionCheckController akan dideploy secara otomatis.

# Chart Url: https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-kube-queue-1.22.4.tgz
admissionCheckController:
  enabled: true  # Atur ke true untuk mengaktifkan ProvisioningRequestAdmissionCheck
  image:
    repository: acs/prevreq-controller
    tag: v1.0.0-aliyun-d31082a1
burst: 50
controller:
  defaultPreemptible: true
  enableBlockingMode: false
  enableStrictPriority: false
  image:
    repository: acs/kube-queue
    tag: v0.11.1-aliyun-34b259af
  queueGroupPlugin: elasticquota
  resources:
    # ...

2. Gunakan controller dalam AdmissionCheck

Untuk menggunakan ProvisioningRequestAdmissionCheckController, buat AdmissionCheck seperti pada contoh berikut dan atur controllerName AdmissionCheck menjadi provisioning-request-admission-controller.

apiVersion: kueue.x-k8s.io/v1beta1
kind: AdmissionCheck
metadata:
  name: sample-prov
spec:
  controllerName: provisioning-request-admission-controller
  parameters:
    apiGroup: kueue.x-k8s.io
    kind: ProvisioningRequestConfig
    name: prov-test-config

3. Definisikan parameter dengan ProvisioningRequestConfig

Controller ProvisioningRequestAdmissionCheck menggunakan ProvisioningRequestConfig untuk mendefinisikan parameter pemeriksaan kustom. Manifes berikut menunjukkan bidang-bidang yang tersedia.

apiVersion: kueue.x-k8s.io/v1beta1
kind: ProvisioningRequestConfig
metadata:
  name: prov-test-config
spec:
  provisioningClassName: atomic-scale-up.kubernetes.io
  parameters:
  managedResources:
  - nvidia.com/gpu

Parameter

Type

Deskripsi

provisioningClassName

string

Saat provisioningRequest dibuat, nilai ini disalin ke bidang ProvisioningClass dari provisioningRequest.

parameters

map[string]string

disalin ke bidang Parameters dari provisioningRequest saat provisioningRequest dibuat.

managedResources

[]string

Jika QueueUnit berisi bidang ini, provisioningRequest dibuat untuknya. Jika tidak, state-nya langsung diatur ke Ready.

4. Tambahkan AdmissionCheck ke antrian

Anda dapat menambahkan pemeriksaan ke konfigurasi antrian di bidang admissionChecks. Berikut adalah contohnya.

apiVersion: scheduling.x-k8s.io/v1alpha1
kind: Queue
metadata:
  name: example-queue # Ganti dengan nama antrian tempat Anda ingin mengaktifkan AdmissionCheck
  namespace: kube-queue
spec:
  ...
  admissionChecks:
  - name: sample-prov # Tentukan nama AdmissionCheck yang telah Anda buat sebelumnya
    selector: # metav1.LabelSelector. Hanya QueueUnit yang sesuai dengan selector ini yang menjalani pemeriksaan kustom.
      matchLabels:
        app: gpu