Antrikan pekerjaan hingga sumber daya kluster tersedia untuk mencegah konflik sumber daya dan pemborosan GPU/CPU yang menganggur.
Instal ack-kube-queue, aktifkan jenis pekerjaan tambahan jika diperlukan, lalu kirimkan pekerjaan ke antrian.
Cara kerja
ack-kube-queue menggunakan mekanisme suspend native Kubernetes. Saat Anda mengirimkan pekerjaan dengan suspend diatur ke true (melalui bidang atau anotasi), pekerjaan tersebut masuk ke antrian. ack-kube-queue memantau ketersediaan sumber daya dan mengatur suspend menjadi false saat sumber daya mencukupi, sehingga pekerjaan dimulai.
Jenis kluster yang didukung
ack-kube-queue mendukung:
-
Kluster ACK yang dikelola yang menjalankan Kubernetes 1.18 atau lebih baru
-
Kluster ACK Edge yang menjalankan Kubernetes 1.18 atau lebih baru
-
Kluster ACK Lingjun yang menjalankan Kubernetes 1.18 atau lebih baru
Instal ack-kube-queue
Langkah instalasi berbeda tergantung jenis kluster.
Kluster ACK yang dikelola dan kluster ACK Edge
Pilih prosedur sesuai status saat ini dari kluster Anda.
Jika suite AI cloud-native belum diinstal
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Applications > Cloud-native AI Suite.
-
Di bagian bawah halaman Cloud-native AI Suite, klik Deploy. Di bagian Scheduling, pilih Kube-Queue. Di bagian Ecosystem Tools, pilih Kubeflow and Arena. Lalu klik Deploy Cloud-native AI Suite.
Jika suite AI cloud-native sudah diinstal
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Applications > Cloud-native AI Suite.
-
Instal ack-arena dan ack-kube-queue secara terpisah. Setelah diinstal, Status di bagian Components menampilkan Deployed.
-
Temukan ack-arena dan klik Deploy di kolom Actions. Di panel Parameters, klik OK.
-
Temukan ack-kube-queue dan klik Deploy di kolom Actions. Di panel tersebut, klik OK.
-
Kluster ACK Lingjun
-
Masuk ke Konsol ACK. Di panel navigasi kiri, pilih Marketplace > Marketplace.
-
Di halaman Marketplace, cari ack-kube-queue dan klik namanya.
-
Di halaman detail aplikasi, klik Deploy. Pada langkah Basic Information, atur Cluster, Namespace, dan Release Name, lalu klik Next.
-
Pada langkah Parameters, atur Chart Version ke versi terbaru, lalu klik OK.
Aktifkan jenis pekerjaan tambahan
Secara default, ack-kube-queue hanya mengaktifkan antrian untuk pekerjaan native Kubernetes. Untuk mengantrikan pekerjaan TensorFlow, pekerjaan PyTorch, pekerjaan MPI, alur kerja Argo, pekerjaan Ray, atau aplikasi Spark, aktifkan masing-masing jenis tersebut secara individual.
Untuk mengantrikan pekerjaan native Kubernetes, kluster harus menjalankan Kubernetes 1.22 atau lebih baru.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Applications > Helm.
-
Temukan ack-kube-queue dan klik Update di kolom Actions.
-
Di templat YAML, atur parameter untuk jenis pekerjaan yang akan diaktifkan:
Parameter Efek extension.argo.enable: trueAktifkan alur kerja Argo extension.mpi.enable: trueAktifkan pekerjaan MPI extension.ray.enable: trueAktifkan pekerjaan Ray extension.spark.enable: trueAktifkan aplikasi Spark extension.tf.enable: trueAktifkan pekerjaan TensorFlow extension.pytorch.enable: trueAktifkan pekerjaan PyTorch -
Klik OK.
Kirimkan pekerjaan
Kirimkan setiap jenis pekerjaan yang didukung ke antrian dan verifikasi bahwa pekerjaan tersebut telah masuk antrian.
Batasan
| Jenis pekerjaan | Batasan |
|---|---|
| TensorFlow, PyTorch, MPI | Harus menggunakan operator yang disediakan oleh ack-arena |
| MPI | Hanya dapat dikirimkan melalui Arena |
| Alur kerja Argo | Hanya alur kerja lengkap yang dapat dimasukkan ke antrian; langkah alur kerja individual tidak dapat. Nyatakan kebutuhan sumber daya dengan anotasi kube-queue/min-resources (lihat Alur kerja Argo). |
| Pekerjaan native Kubernetes | Kluster harus menjalankan Kubernetes 1.22 atau lebih baru |
Pekerjaan TensorFlow, pekerjaan PyTorch, dan pekerjaan MPI
Tambahkan anotasi scheduling.x-k8s.io/suspend: "true" ke manifes pekerjaan.
Contoh pekerjaan TensorFlow:
apiVersion: "kubeflow.org/v1"
kind: "TFJob"
metadata:
name: "job1"
annotations:
scheduling.x-k8s.io/suspend: "true"
spec:
...
Verifikasi pekerjaan telah masuk antrian:
kubectl describe tfjob job1
Pekerjaan yang masuk antrian menampilkan kondisi Suspended.
Pekerjaan native Kubernetes
Atur spec.suspend ke true. Saat dikeluarkan dari antrian, ack-kube-queue mengatur bidang ini menjadi false dan pekerjaan dimulai.
apiVersion: batch/v1
kind: Job
metadata:
generateName: pi-
spec:
suspend: true
...
Verifikasi pekerjaan telah masuk antrian:
kubectl get job <job-name>
Pekerjaan yang masuk antrian menampilkan SUSPENDED. Saat ack-kube-queue menerima pekerjaan tersebut, status SUSPENDED dihapus dan pekerjaan dimulai.
Alur kerja Argo
Prasyarat: Instal Argo Workflows dari Marketplace di Konsol ACK.
Tambahkan templat kustom bernama kube-queue-suspend dengan tipe suspend, dan atur spec.suspend ke true. Nyatakan kebutuhan sumber daya dengan anotasi kube-queue/min-resources:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: <workflow-name>-
annotations:
kube-queue/min-resources: |
cpu: 5
memory: 5G
spec:
suspend: true
entrypoint: <entrypoint-template>
templates:
# Wajib: tambahkan templat suspend bernama kube-queue-suspend
- name: kube-queue-suspend
suspend: {}
- name: <entrypoint-template>
# ... langkah-langkah alur kerja Anda
Aplikasi Spark
Prasyarat: Instal ack-spark-operator dari Marketplace di Konsol ACK.
Tambahkan anotasi scheduling.x-k8s.io/suspend: "true" ke manifes SparkApplication:
apiVersion: sparkoperator.k8s.io/v1beta2
kind: SparkApplication
metadata:
generateName: spark-pi-suspend-
namespace: spark-operator
annotations:
scheduling.x-k8s.io/suspend: "true"
spec:
...
Pekerjaan Ray
Prasyarat: Instal Kuberay-Operator dari halaman Add-ons di Konsol ACK. Lihat Kelola komponen.
Atur spec.suspend ke true:
apiVersion: ray.io/v1
kind: RayJob
metadata:
name: rayjob-sample
spec:
# Suspend menentukan apakah pengontrol RayJob harus membuat instans RayCluster.
# Jika pekerjaan diajukan dengan bidang suspend diatur ke true, RayCluster tidak akan dibuat dan kami akan menunggu transisi ke false.
# Jika RayCluster sudah dibuat, maka akan dihapus. Dalam kasus transisi ke false, RayCluster baru akan dibuat.
suspend: true
...