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: 1Diagram berikut menunjukkan alur kerja AdmissionCheck.
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
admissionChecksdalamstatusQueueUnit, controller dapat mendeteksi QueueUnit mana yang memerlukan pemeriksaan kustom. Controller menentukan apakah ia bertanggung jawab atas entriadmissionCheckstertentu dengan memeriksacontrollerName. NilaicontrollerNameini ditemukan dalam objek AdmissionCheck yang sesuai dengannamepada bidangadmissionChecksdalamstatusQueueUnit. Setelah pemeriksaan selesai, controller memperbaruistatusentriadmissionChecksyang sesuai dalamstatusQueueUnit menjadiReadyatauRejectedberdasarkan 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-configParameter
Type
Deskripsi
controllerNamestring
Menentukan nama controller yang menangani pemeriksaan admission ini.
parametersstruct
Tipe struct yang terdiri dari tiga bidang string:
apiGroup,kind, danname. Struct ini menjelaskan parameter yang terkait dengan AdmissionCheck.Parameter pemeriksaan kustom
AdmissionCheck menggunakan bidang
parametersuntuk 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.

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-configLangkah 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/gpuParameter | Type | Deskripsi |
| string | Saat |
| map[string]string | Saat |
| []string | Jika QueueUnit berisi bidang yang ditentukan, |
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