All Products
Search
Document Center

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

Last Updated:Mar 25, 2026

Secara default, ACK Kube Queue hanya memeriksa nilai Max dari kuota yang didefinisikan dalam ElasticQuotaTree. Jika pemeriksaan kuota berhasil, Job dijadwalkan oleh scheduler. Untuk menerapkan logika pemeriksaan dequeue yang lebih kompleks, Anda dapat menggunakan mekanisme AdmissionCheck. AdmissionCheck adalah mekanisme pemeriksaan dequeue kustom yang dapat dipasang (pluggable) yang disediakan oleh ACK Kube Queue, memungkinkan validasi atau pemeriksaan tambahan sebelum sebuah Job dikeluarkan dari antrian (yaitu, sebelum dijadwalkan oleh scheduler), sehingga hanya Job yang memenuhi syarat yang dijadwalkan.

Cara kerja

Setelah AdmissionCheck baru ditambahkan ke kluster, ACK Kube Queue tidak langsung mengatur status Job menjadi Dequeued setelah menyelesaikan pemeriksaan kuota untuk QueueUnit. Sebagai gantinya, status QueueUnit diatur menjadi Reserved dan menambahkan admissionChecks dengan status Pending 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: Reserved resources success, waiting admission checks to be ready
  phase: Reserved
  podState: {}

Setiap AdmissionCheckController memeriksa admissionChecks-nya masing-masing dan mengatur state dalam admissionChecks menjadi Ready jika pemeriksaan berhasil. Ketika semua AdmissionCheck berada dalam status Ready, QueueUnit memasuki 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

Diagram berikut menunjukkan alur kerja AdmissionCheck.

image

Konfigurasi AdmissionCheck

Rincian konfigurasi

Administrator harus mengonfigurasi item-item berikut di kluster.

  • Sebuah controller: AdmissionCheckController kustom (disebut sebagai ACController dalam diagram).

    AdmissionCheckController adalah controller yang Anda kelola untuk melakukan pemeriksaan kustom. Dengan memantau bidang admissionChecks dalam status QueueUnit, controller dapat mendeteksi QueueUnit mana yang memerlukan pemeriksaan kustom. Controller menentukan apakah ia bertanggung jawab atas entri admissionChecks tertentu dengan memeriksa controllerName. Nilai controllerName ini ditemukan dalam objek AdmissionCheck yang sesuai dengan name pada bidang admissionChecks dalam status QueueUnit. Setelah pemeriksaan selesai, controller memperbarui status entri admissionChecks yang sesuai dalam 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, kirimkan custom resource (CR) yang berisi nama controller yang menangani pemeriksaan serta parameter terkait apa pun.

      Contoh berikut menunjukkan AdmissionCheck sampel beserta 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 menangani pemeriksaan admission ini.

      parameters

      struct

      Tipe struct yang terdiri dari tiga bidang string: apiGroup, kind, dan name. Struct ini menjelaskan parameter yang terkait dengan AdmissionCheck.

    • Parameter pemeriksaan kustom

      AdmissionCheck menggunakan bidang parameters untuk menautkan ke resource parameter kustom. Saat controller melakukan pemeriksaan, ia membaca parameter kustom ini untuk menjalankan logika tertentu. Anda harus menginstal CRD untuk parameter kustom tersebut dan mengirimkan CR yang sesuai. Satu controller dapat melakukan beberapa jenis pemeriksaan; dengan mendefinisikan parameter berbeda untuk setiap pemeriksaan, controller dapat membedakan perilaku yang berbeda.

  • Item konfigurasi dalam antrian:

    Setelah Anda men-deploy AdmissionCheckController, CR AdmissionCheck, dan resource parameter kustom, kluster dapat melakukan pemeriksaan kustom. Anda kemudian dapat menambahkan pemeriksaan tersebut ke antrian target untuk mengaktifkannya.

Contoh konfigurasi

Berikut ini contoh konfigurasi AdmissionCheck yang menggunakan ProvisioningRequestAdmissionCheckController.

Langkah 1: Aktifkan controller ProvisioningRequestAdmissionCheck

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

image

Langkah 2: Gunakan controller dalam AdmissionCheck

Untuk menggunakan ProvisioningRequestAdmissionCheckController, kirimkan AdmissionCheck seperti pada contoh berikut, dengan controllerName diatur ke 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

Langkah 3: Sesuaikan parameter pemeriksaan dengan ProvisioningRequestConfig

ProvisioningRequestConfig adalah tipe parameter khusus untuk ProvisioningRequestAdmissionCheckController. Anda dapat menggunakannya untuk menyesuaikan parameter pemeriksaan. Contoh berikut menunjukkan ProvisioningRequestConfig sampel beserta 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 pada provisioningRequest.

parameters

map[string]string

Saat provisioningRequest dibuat, nilai ini disalin ke bidang Parameters pada provisioningRequest.

managedResources

[]string

Jika QueueUnit berisi bidang yang ditentukan, provisioningRequest dibuat untuknya. Jika tidak, state-nya langsung diatur menjadi Ready.

Langkah 4: Tambahkan konfigurasi AdmissionCheck ke antrian

Anda dapat menambahkan pemeriksaan dalam bidang admissionChecks pada konfigurasi antrian. Berikut ini 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 kirimkan sebelumnya.
    selector: # Sebuah metav1.LabelSelector. Hanya QueueUnit yang sesuai dengan selector ini yang akan menjalani pemeriksaan kustom ini.
      matchLabels:
        app: gpu