ack-kube-queue adalah manajer antrian pekerjaan yang dirancang untuk mengoptimalkan pengelolaan dan meningkatkan pemanfaatan sumber daya untuk beban kerja AI, pembelajaran mesin, serta pemrosesan batch di kluster Container Service for Kubernetes (ACK). ack-kube-queue menyediakan kemampuan pengelolaan antrian fleksibel, mengotomatiskan alokasi beban kerja dan pengelolaan kuota sumber daya, serta membantu administrator sistem meningkatkan efisiensi eksekusi pekerjaan. Topik ini menjelaskan cara menginstal dan mengonfigurasi ack-kube-queue serta menyerahkan pekerjaan setelah instalasi.
Batasan
Hanya Kluster ACK Dikelola, Kluster ACK Edge, dan Kluster ACK Lingjun dengan versi Kubernetes 1.18 atau lebih baru yang didukung.
Instal ack-kube-queue
Kluster ACK dikelola dan Kluster ACK Edge
Suite AI cloud-native belum diinstal
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster target dan klik namanya. Di panel navigasi kiri, pilih .
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.
Suite AI cloud-native telah diinstal
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster target dan klik namanya. Di panel navigasi kiri, pilih .
Instal ack-arena dan ack-kube-queue.
Di halaman Cloud-native AI Suite, temukan ack-arena dan klik Deploy di kolom Actions. Di panel Parameters, klik OK.
Di halaman Cloud-native AI Suite, temukan ack-kube-queue dan klik Deploy di kolom Actions. Di panel yang muncul, klik OK.
Setelah ack-arena dan ack-kube-queue diinstal, status Deployed akan ditampilkan di kolom Status pada bagian Components.
Kluster ACK Lingjun
Masuk ke Konsol ACK. Di panel navigasi kiri, pilih .
Di halaman Marketplace, masukkan ack-kube-queue di kotak pencarian dan klik ikon pencarian. Setelah ack-kube-queue ditampilkan, klik namanya.
Di pojok kanan atas halaman detail aplikasi, klik Deploy. Di langkah Basic Information, atur parameter Kluster, Nama, dan Nama Rilis. Lalu, klik Next.
Di langkah Parameters, atur Chart Version ke versi terbaru. Lalu, klik OK.
Konfigurasikan ack-kube-queue
Anda dapat menggunakan ack-kube-queue untuk mengaktifkan antrian berbagai jenis pekerjaan, termasuk TensorFlow, PyTorch, Message Passing Interface (MPI), Argo Workflows, Ray, Spark, dan pekerjaan asli Kubernetes. Secara default, ack-kube-queue hanya mendukung pekerjaan TensorFlow dan PyTorch. Anda dapat mengaktifkan dukungan untuk jenis pekerjaan lain sesuai kebutuhan bisnis.
Batasan
Anda harus menggunakan Operator dari ack-arena untuk menyerahkan pekerjaan TensorFlow, PyTorch, dan MPI ke antrian.
Untuk menyerahkan pekerjaan asli Kubernetes ke antrian, versi Kubernetes kluster harus 1.22 atau lebih baru.
Pekerjaan MPI hanya dapat diserahkan ke antrian melalui Arena.
Anda hanya dapat menyerahkan alur kerja Argo ke antrian. Langkah-langkah dalam alur kerja Argo tidak dapat diserahkan ke antrian. Tambahkan anotasi berikut untuk menentukan sumber daya yang diminta oleh alur kerja Argo:
... annotations: kube-queue/min-resources: | cpu: 5 memory: 5G ...
Aktifkan dukungan untuk jenis pekerjaan tertentu
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster target dan klik namanya. Di panel kiri, pilih .
Temukan ack-kube-queue dan klik Update di kolom Actions.
Modifikasi template YAML berdasarkan deskripsi dalam tabel berikut untuk mengaktifkan dukungan jenis pekerjaan tertentu.
Parameter
Deskripsi
Atur
extension.argo.enableketrue.Aktifkan dukungan untuk alur kerja Argo.
Atur
extension.mpi.enableketrue.Aktifkan dukungan untuk pekerjaan MPI.
Atur
extension.ray.enableketrue.Aktifkan dukungan untuk pekerjaan Ray.
Atur
extension.spark.enableketrue.Aktifkan dukungan untuk aplikasi Spark.
Atur
extension.tf.enableketrue.Aktifkan dukungan untuk pekerjaan TensorFlow.
Atur
extension.pytorch.enableketrue.Aktifkan dukungan untuk pekerjaan PyTorch.
Menyerahkan pekerjaan
Menyerahkan pekerjaan TensorFlow, pekerjaan PyTorch, dan pekerjaan MPI ke antrian
Tambahkan anotasi scheduling.x-k8s.io/suspend="true" ke pekerjaan. Contoh kode berikut menyerahkan pekerjaan TensorFlow ke antrian:
apiVersion: "kubeflow.org/v1"
kind: "TFJob"
metadata:
name: "job1"
annotations:
scheduling.x-k8s.io/suspend: "true"
spec:
...Menyerahkan pekerjaan asli Kubernetes ke antrian
Atur bidang suspend ke true. Dalam contoh sebelumnya, pekerjaan dengan permintaan CPU 100m dimasukkan ke dalam antrian. Saat pekerjaan dikeluarkan dari antrian, nilai bidang suspend berubah menjadi false, dan pekerjaan dijalankan oleh komponen relevan di kluster.
apiVersion: batch/v1
kind: Job
metadata:
generateName: pi-
spec:
suspend: true
...Menyerahkan alur kerja Argo ke antrian
Anda harus terlebih dahulu menginstal komponen Argo Workflows dari halaman Marketplace di Konsol ACK.
Gunakan Argo Workflows untuk menambahkan template kustom bernama kube-queue-suspend dengan tipe suspend. Saat menyerahkan alur kerja, atur suspend ke true. Contoh:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: $example-name
spec:
suspend: true # Atur bidang ini ke true.
entrypoint: $example-entrypoint
templates:
# Tambahkan template tipe suspend bernama kube-queue-suspend.
- name: kube-queue-suspend
suspend: {}
- name: $example-entrypoint
...Menyerahkan aplikasi Spark ke antrian
Anda harus terlebih dahulu menginstal ack-spark-operator dari halaman Marketplace di Konsol ACK.
Saat menyerahkan aplikasi Spark, tambahkan anotasi scheduling.x-k8s.io/suspend="true" ke konfigurasi aplikasi Spark.
apiVersion: sparkoperator.k8s.io/v1beta2
kind: SparkApplication
metadata:
generateName: spark-pi-suspend-
namespace: spark-operator
annotations:
scheduling.x-k8s.io/suspend: "true"
spec:
...Menyerahkan pekerjaan Ray ke antrian
Anda harus terlebih dahulu menginstal Kuberay-Operator dari halaman Add-ons di Konsol ACK. Untuk informasi lebih lanjut, lihat Kelola Komponen.
Saat menyerahkan pekerjaan Ray, atur spec.suspend ke true.
apiVersion: ray.io/v1
kind: RayJob
metadata:
name: rayjob-sample
spec:
# Suspend menentukan apakah controller RayJob harus membuat instance RayCluster.
# Jika pekerjaan diterapkan dengan bidang suspend diatur ke true, RayCluster tidak akan dibuat dan kita akan menunggu transisi ke false.
# Jika RayCluster sudah dibuat, itu akan dihapus. Dalam kasus transisi ke false, RayCluster baru akan dibuat.
suspend: true
...