Ringkasan Utama
Kubernetes AI Conformance mensertifikasi satu produk dalam satu konfigurasi, selama satu tahun, terhadap checklist berversi berisi requirement MUST dan SHOULD yang disebut KAR. Checklist v1.37 memuat 15 requirement, 8 di antaranya MUST. Sertifikat membuktikan platform lulus atau menyatakan memenuhi tiap butir, bukan bahwa workload Anda akan berjalan baik.
Sebuah halaman vendor menulis Certified Kubernetes AI Platform, dan saya ingin tahu apa janji kalimat itu sebelum mengulanginya ke orang lain. Pengumuman CNCF tanggal 24 Maret 2026 menyebut penawaran bersertifikat naik dari 18 saat peluncuran November 2025 menjadi 31, tetapi jumlah badge tidak menjelaskan arti tiap badge. Jadi saya melewatkan press release dan membaca checklist-nya.
Tulisan ini disusun dari repositori cncf/k8s-ai-conformance (checklist v1.35 dan v1.37, instruksi submission, dan FAQ), repositori hulu kubernetes-sigs/ai-conformance (proses KAR dan README test suite), serta pengumuman CNCF. Saya mem-diff kedua file checklist sendiri. Saya tidak menjalankan conformance suite pada sebuah cluster, dan klaim yang hanya berasal dari pengumuman saya tandai demikian.
Apa yang disertifikasi badge, dan apa yang tidak
Sertifikasi berlaku per produk dan per konfigurasi, dan FAQ memberi contoh bahwa deployment cloud dan deployment air-gapped adalah konfigurasi berbeda. Platform harus lebih dulu lulus Kubernetes conformance sebelum bisa menjadi AI conformant. Sertifikasi berlaku satu tahun dan harus diperbarui, dan review CNCF biasanya memakan waktu hingga 10 hari kerja setelah pull request dibuka.
Program ini mendefinisikan kapabilitas yang harus ditawarkan sebuah cluster untuk menjalankan workload AI dan ML, mencakup training, inference, dan agentic sekaligus, sengaja agar tidak terfragmentasi. Tujuannya interoperabilitas dan portabilitas. Itu pernyataan tentang platform, bukan tentang model server, GPU, atau latency Anda, dan sisa tulisan ini terus kembali ke perbedaan tersebut.
Bagaimana KAR lahir: SHOULD dulu, MUST kemudian
Kubernetes AI conformance Requirement, atau KAR, adalah proposal bernomor di kubernetes-sigs/ai-conformance. README menyebut setiap KAR dimulai sebagai SHOULD dan dimaksudkan naik menjadi MUST seiring proses KEP di tiap rilis Kubernetes. Requirement diberi versi per rilis dalam file conformance-versions, yang harus di-merge sebelum code freeze lalu disalin ke cncf/k8s-ai-conformance. README menandai kriteria penghapusan requirement sebagai TBD, jadi belum ada yang menuliskan bagaimana sebuah requirement keluar.
Dua aturan penting bagi yang merencanakan ke depan. Setiap requirement butuh test design di dalam KAR, cukup spesifik untuk diotomatisasi, dan mulai v1.37 test otomatis menjadi prasyarat untuk SHOULD dan MUST baru. Lalu, tidak ada requirement baru diterima setelah KEP dan KAR freeze. Pengumuman menyebut tiga KAR yang hadir bersama pembaruan berbasis v1.35: KAR-10 komunikasi pod-to-pod berperforma tinggi, KAR-11 advanced inference ingress, dan KAR-41 dukungan disaggregated inference.
SHOULD adalah sinyal, bukan gerbang. Thread review KAR-10 menunjukkan maintainer memilih SHOULD alih-alih MUST, dengan seorang approver berkata batasnya baru naik setelah ada sinyal luas di berbagai distribusi. Saat vendor menulis SHOULD sebagai Implemented, anggap itu pernyataan roadmap, bukan jaminan.
Checklist v1.35 ke v1.37, requirement demi requirement
Saya mem-diff AIConformance-1.35.yaml dengan AIConformance-1.37.yaml. File v1.35 punya 12 id requirement, 9 di antaranya MUST. File v1.37 punya 15, 8 di antaranya MUST. Semua yang tidak ditandai berubah pada tabel di bawah identik di kedua file, selain komentar header dan blok metadata.
| Id requirement | Level | File v1.35 | File v1.37 | Yang dituntut dari platform |
|---|---|---|---|---|
| dra_support | MUST | Tercantum | Tidak ada | Mendukung API Dynamic Resource Allocation untuk permintaan device yang lebih halus |
| driver_runtime_management | SHOULD | Tercantum | Tercantum | Cara yang bisa diverifikasi untuk menjaga driver accelerator dan config container runtime tetap benar di node |
| gpu_sharing | SHOULD | Tercantum | Tercantum | Minimal satu strategi GPU sharing, seperti partisi fraksional atau time-slicing, jika hardware mendukung |
| virtualized_accelerator | SHOULD | Tercantum | Tercantum | Mengekspos accelerator tervirtualisasi seperti vGPU secara konsisten dengan yang fisik |
| ai_inference | MUST | Tercantum | Tercantum | Gateway API dengan weighted traffic splitting dan routing berbasis header untuk layanan inference |
| advanced_inference_ingress | SHOULD | Tidak ada | Baru | Implementasi Gateway API Inference Extension, termasuk routing yang sadar cache (KAR-11) |
| high_performance_networking | SHOULD | Tidak ada | Baru | Resource jaringan sekunder yang bisa ditemukan dan pod multi-interface, dengan DRA sebagai mekanisme (KAR-10) |
| disaggregated_inference | SHOULD | Tidak ada | Baru | Menjalankan stack disaggregated inference dengan instance prefill dan decode terpisah (KAR-41) |
| gang_scheduling | MUST | Tercantum | Tercantum | Memasang dan menjalankan minimal satu solusi gang scheduling all-or-nothing, seperti Kueue atau Volcano |
| cluster_autoscaling | MUST | Tercantum | Tercantum | Jika ada autoscaler, men-scale node group accelerator berdasarkan pod pending yang meminta accelerator |
| pod_autoscaling | MUST | Tercantum | Tercantum | Jika HorizontalPodAutoscaler didukung, harus bekerja untuk pod accelerator dengan custom metrics |
| accelerator_metrics | MUST | Tercantum | Tercantum | Menjalankan minimal satu solusi metrics accelerator dengan utilisasi dan memori per accelerator |
| ai_service_metrics | MUST | Tercantum | Tercantum | Menemukan dan mengumpulkan metrics workload dalam format standar seperti Prometheus exposition |
| secure_accelerator_access | MUST | Tercantum | Tercantum | Mengisolasi dan memediasi akses container ke accelerator lewat device plugin atau DRA dan runtime |
| workload_sandboxing | SHOULD | Tidak ada | Baru | Sandbox dengan isolasi kuat dari kernel host untuk kode tak tepercaya, ditujukan bagi agent |
| robust_controller | MUST | Tercantum | Tercantum | Memasang operator kompleks dengan CRD, seperti Ray atau Kubeflow, dan membuatnya reconcile dengan andal |
Ada dua pembacaan yang perlu dieksplisitkan. Pertama, dra_support adalah MUST di file v1.35 dan tidak muncul di file v1.37. Penghapusannya terlihat di diff, tetapi saya tidak menemukan sumber yang menjelaskannya, jadi saya tidak menebak. Kedua, pengumuman menyebut platform bersertifikat harus mendukung Stable In-Place Pod Resizing dan Workload-Aware Scheduling. Keduanya tidak muncul sebagai id di checklist mana pun, dan id terdekat adalah gang_scheduling, jadi anggap press release sebagai ringkasan dan YAML sebagai spesifikasinya.
Seperti apa sebuah submission sebenarnya
Submission adalah pull request yang menambahkan vX.Y/dir/PRODUCT.yaml, plus artifact test opsional, di direktori bernama produk Anda. Field id, description, dan level tidak boleh diubah. Anda mengisi status, evidence, dan notes, dan untuk setiap MUST ketiganya harus terisi. vendorName harus persis sama dengan nama Anda di daftar CNCF Members pada landscape, dan badan hukumnya perlu punya formulir partisipasi bertanda tangan. Berikut contoh ringkas dalam bentuk itu, dengan vendor fiktif.
# vX.Y/$dir/PRODUCT.yaml, trimmed to the fields that decide the review.
# id, description and level are copied from AIConformance-1.37.yaml and must
# not be edited; only status, evidence and notes are yours to fill in.
metadata:
kubernetesVersion: v1.37
platformName: Acme GPU Cloud # the product, not the Kubernetes version
platformVersion: v4.2.0
vendorName: Acme Ltd # must match your CNCF Members landscape name exactly
k8sConformanceUrl: https://github.com/cncf/k8s-conformance/tree/master/v1.37/acme-gpu-cloud
spec:
schedulingOrchestration:
- id: gang_scheduling
level: MUST
status: Implemented
evidence:
- "file://v1.37/acme-gpu-cloud/junit.xml#TestGangScheduling"
- "file://v1.37/acme-gpu-cloud/e2e.log"
- id: cluster_autoscaling
level: MUST
status: N/A # the one MUST that accepts N/A today
notes: "Air-gapped configuration: nodes are racked, there is no autoscaler to observe."
security:
- id: workload_sandboxing
level: SHOULD
status: Implemented
evidence:
- "https://docs.acme.example/runtime-classes/gvisor" # manual attestation, no URL = no creditEvidence berupa URL publik atau, mulai v1.37, referensi file ke artifact di direktori submission Anda. Itulah model hybrid: requirement yang punya test otomatis disarankan diverifikasi dengan suite hulu, sisanya bergantung pada dokumentasi atau URL referensi. Requirement tanpa evidence hanyalah klaim, dan reviewer satu-satunya pemeriksanya.
Test suite, dan run hijau yang ternyata skip
Suite hulu di kubernetes-sigs/ai-conformance mencakup lima test: TestSecureAcceleratorAccess, TestGangScheduling, TestAcceleratorClusterAutoscaling, dan TestRobustCRDControllerOperation untuk requirement MUST, serta TestWorkloadSandboxing untuk satu SHOULD. Itu lima dari 15 requirement. Routing gateway, kedua requirement metrics, HPA, dan tiga requirement inference baru tidak punya test otomatis dalam daftar itu, sehingga tetap bergantung pada dokumentasi.
# Run the upstream suite at the tag that matches your cluster, from a checkout
# of kubernetes-sigs/ai-conformance. Needs cluster-admin on the target cluster.
export KUBECONFIG=$HOME/.kube/acme-gpu.yaml
# The four MUST tests plus the one SHOULD test; names are from test/README.md.
go test -v ./test -timeout 75m \
-sandbox-runtime-class=gvisor \
-autoscaler-node-pool-label=<your-pool-label> \
| tee e2e.log
# Trap: with no -autoscaler-node-pool-label the autoscaling test is SKIPPED, and
# go test still exits 0. Read the log, do not trust the exit code.
grep -E '^(--- (SKIP|FAIL)|=== RUN)' e2e.log
# The two machine-readable artifacts the submission directory can carry.
go test -v ./test -json > results.json
go run gotest.tools/gotestsum@latest --junitfile junit.xml -- ./test
# Hermetic unit tests that need no cluster and no accelerators.
go test -v -short ./testPrasyaratnya ketat. Autoscaling butuh cluster autoscaler yang berjalan dan pool accelerator terisolasi dengan ukuran minimum N minimal 1, ukuran maksimum minimal N ditambah 1, scale-down aktif, dan satu node label yang stabil, dan README menyarankan timeout 75 menit atau lebih. Test sandbox butuh RuntimeClass seperti gVisor atau Kata dan menjalankan probe yang sama di control pod biasa yang dipasang pada node yang sama, memeriksa isolasi process, kernel dan memori, filesystem, serta network.
Kedua jalur skip itu senyap seperti test Go pada umumnya. Test autoscaling di-skip secara default jika flag label node pool tidak diisi, dan test sandbox di-skip jika tidak ada RuntimeClass sandbox. Test yang di-skip tidak membuat go test gagal, sehingga run hijau bisa berisi nol evidence untuk dua requirement. Baca log untuk baris SKIP sebelum melampirkannya.
Di mana conformance berhenti: empat batas
Sebuah badge memadatkan banyak catatan kaki. Ini empat yang menurut saya perlu diketahui reviewer pengadaan, masing-masing diambil dari dokumen program itu sendiri.
- SHOULD itu opsional. Tujuh dari 15 requirement v1.37 adalah SHOULD, termasuk inference ingress, disaggregated inference, jaringan berperforma tinggi, dan sandboxing, yang paling dipedulikan tim serving LLM dan agent.
- Tidak ada batas performa. Di thread review KAR-10 maintainer sepakat bahwa menetapkan threshold tidak praktis, dan test yang diusulkan memeriksa bahwa dua pod di interface sekunder bisa mentransfer data, bukan seberapa cepat. Conformant tidak berarti cepat.
- Layer tidak diwariskan. FAQ menyebut membangun di atas distribusi conformant tidak membuat platform berlapis otomatis conformant, produk berlapis harus re-test, dan harus menyumbang minimal satu fitur unik. Tanyakan layer mana yang memiliki tiap requirement.
- N/A itu sempit. Justifikasinya tidak boleh berupa platform tidak mendukung fitur itu, dan pada MUST saat ini hanya diterima untuk cluster_autoscaling. Teks pod_autoscaling juga bersyarat pada dukungan HPA, tetapi instruksi hanya menyebut cluster autoscaler.
Tidak satu pun ini kelemahan program. Conformance suite ada untuk membuat batas bawah bisa diuji, dan FAQ jujur tentang apa yang tidak diklaimnya. Risikonya ada pada pembaca yang memperlakukan batas bawah sebagai peringkat.
Ke mana program ini menuju di 2026
Pengumuman menggambarkan peralihan dari self-assessment menuju pengujian conformance otomatis, termasuk Verify Conformance Bot untuk validasi pihak ketiga, dan menyebut standar Sovereign AI yang berfokus pada sandboxing dan privasi data direncanakan untuk akhir 2026. Repositori sudah mengarah ke sana: checklist dan instruksi v1.37 memperkenalkan model hybrid, dan test suite menyertakan test sandboxing.
Pengumuman juga mengutip laporan AI Tech Radar CNCF yang menyebut 41 persen developer AI mengidentifikasi diri sebagai cloud native. Saya tidak akan bersandar pada angka itu untuk keputusan apa pun, karena ia menggambarkan populasi survei, bukan properti platform, tetapi angka itu menjelaskan mengapa program ini bergerak cepat. Rencana di press release tetaplah rencana, jadi cek repositori sebelum bergantung pada sebuah tanggal.
Yang dikerjakan hari Senin
Entah Anda membeli platform atau mensertifikasi satu, pekerjaannya membaca dan menjalankan, bukan memercayai sebuah logo.
- Jika membeli: minta vX.Y/dir/PRODUCT.yaml yang persis di cncf/k8s-ai-conformance lalu baca, bukan landing page vendor. Cek versi Kubernetes dan konfigurasi yang dicakupnya.
- Cari di file itu N/A dan Partially Implemented, serta baris SHOULD berstatus Implemented tanpa URL evidence. Di situlah badge paling tipis.
- Jika mensertifikasi: jalankan suite hulu pada tag yang sesuai cluster Anda, dengan runtime class sandbox dan label node pool autoscaler terisi, lalu baca log untuk baris SKIP.
- Petakan setiap requirement ke layer yang memilikinya, dan tulis pemetaan itu ke notes sebelum reviewer bertanya.
# Monday, step 1: read what your vendor actually claimed, per Kubernetes version.
git clone --depth=1 https://github.com/cncf/k8s-ai-conformance.git
ls k8s-ai-conformance/v1.36/ # one directory per certified product
ls k8s-ai-conformance/docs/ # AIConformance-1.35.yaml .. 1.37.yaml
# Step 2: find every requirement the vendor answered with N/A or Partially Implemented.
grep -nE 'status: *("?N/A|"?Partially)' -B3 k8s-ai-conformance/v1.36/*/PRODUCT.yaml
# Step 3: diff the checklist you were promised against the one now in force.
diff k8s-ai-conformance/docs/AIConformance-1.35.yaml \
k8s-ai-conformance/docs/AIConformance-1.37.yaml | grep -E '^[<>] +- id:'Perintah di bawah ini melakukan pembacaan dan diff. Clone repositori secara shallow, lihat apa yang diajukan vendor, dan bandingkan checklist yang dijanjikan dengan yang berlaku hari ini.
Baca AI conformance sebagai batas bawah yang dipublikasikan, dengan pemilik bernama untuk tiap anak tangga: YAML memberi tahu apa yang diklaim, test suite memberi tahu apa yang diperiksa, dan sisanya adalah attestation. Saat vendor memamerkan badge, minta PRODUCT.yaml, versi Kubernetes, konfigurasi, dan daftar requirement yang di-skip atau dijawab N/A.
Sumber dan bacaan lanjutan
- CNCF: hampir menggandakan platform Kubernetes AI bersertifikat (24 Maret 2026)
- GitHub: cncf/k8s-ai-conformance, repositori dan README program
- GitHub: AIConformance-1.37.yaml, checklist v1.37
- GitHub: cncf/k8s-ai-conformance, instruksi mengirim hasil
- GitHub: FAQ cncf/k8s-ai-conformance, termasuk produk berlapis dan N/A
- GitHub: kubernetes-sigs/ai-conformance, proses KAR dan versioning
- GitHub: README test suite kubernetes-sigs/ai-conformance
- GitHub: pull request KAR-10, komunikasi pod-to-pod berperforma tinggi

