Kluster alur kerja didasarkan pada Argo Workflows sumber terbuka dan dapat digunakan untuk pipa Continuous Integration dan Continuous Delivery (CI/CD), pemrosesan data, pembelajaran mesin, serta simulasi perhitungan. Artikel ini memberikan contoh cara menggunakan Alibaba Cloud Argo CLI untuk membuat alur kerja dan mengonfigurasi sumber daya CPU dan memori.
Prasyarat
Catatan penggunaan
Akun layanan alur kerja
Alur kerja memungkinkan Anda menentukan akun layanan untuk mengakses sumber daya Kubernetes lainnya. Anda dapat membuat akun layanan, dan kluster alur kerja secara otomatis memberikan izin kepada akun tersebut. Jika akun layanan memiliki izin yang tidak mencukupi, bergabunglah dengan grup DingTalk 35688562 untuk mendapatkan dukungan teknis.
Alibaba Cloud Argo CLI
Alibaba Cloud Argo CLI sepenuhnya kompatibel dengan Argo CLI sumber terbuka dan menyediakan peningkatan kemampuan metrik serta pencatatan. Anda dapat menggunakan CLI ini untuk memantau Penggunaan CPU, Penggunaan memori, dan biaya operasional dari sebuah alur kerja. Selain itu, Anda dapat menggunakannya untuk mendapatkan log pod yang telah dihapus dari alur kerja.
Ikuti langkah-langkah berikut:
Darwin: argo-cli-aliyun-darwin
Linux: argo-cli-aliyun-linux
Dalam contoh berikut, Linux digunakan. Unduh salah satu paket Alibaba Cloud Argo CLI berikut sesuai dengan sistem operasi Anda:
Jalankan perintah berikut untuk mengunduh Alibaba Cloud Argo CLI:
wget https://ack-one.oss-cn-hangzhou.aliyuncs.com/cli/v3.4.12/argo-cli-aliyun-linuxJalankan perintah berikut untuk membuat argo-cli-aliyun-linux dapat dieksekusi:
chmod +x argo-cli-aliyun-linuxPindahkan file yang dapat dieksekusi ke direktori yang termasuk dalam variabel lingkungan, misalnya:
/usr/local/bin/.mv argo-cli-aliyun-linux /usr/local/bin/argo
Buat alur kerja
Anda dapat menggunakan Alibaba Cloud Argo CLI atau kubectl untuk membuat alur kerja.
Gunakan Alibaba Cloud Argo CLI untuk mengelola alur kerja
Buat file bernama helloworld-workflow.yaml dan tambahkan konten berikut ke dalam file:
apiVersion: argoproj.io/v1alpha1 kind: Workflow # jenis spesifikasi k8s baru. metadata: generateName: hello-world- # nama spesifikasi alur kerja. spec: entrypoint: whalesay # panggil template whalesay. templates: - name: whalesay # nama template. container: image: docker/whalesay command: [ cowsay ] args: [ "hello world" ]Jalankan perintah berikut untuk mengirimkan alur kerja:
argo submit helloworld-workflow.yamlPeriksa status alur kerja.
Jalankan perintah berikut untuk melihat daftar alur kerja:
argo listKeluaran yang diharapkan:
NAME STATUS AGE DURATION PRIORITY hello-world-lgdpp Succeeded 2m 37s 0Jalankan perintah berikut untuk memeriksa status alur kerja:
argo get hello-world-lgdppKeluaran yang diharapkan:
Name: hello-world-lgdpp Namespace: default ServiceAccount: unset (akan berjalan dengan ServiceAccount default) Status: Succeeded Conditions: PodRunning False Completed True .... Duration: 37 detik Progress: 1/1 ResourcesDuration: 17s*(1 cpu),17s*(100Mi memory) STEP TEMPLATE PODNAME DURATION MESSAGE ✔ hello-world-lgdpp whalesay hello-world-lgdpp 27s
Gunakan kubectl untuk mengelola alur kerja
Setelah mengonfigurasi file kubeconfig, Anda dapat menggunakan kubectl untuk mengelola kluster alur kerja. Namun, beberapa operasi dibatasi dibandingkan dengan kluster Kubernetes biasa. Tabel berikut menjelaskan izin yang tersedia untuk mengelola sumber daya menggunakan kubectl.
Sumber Daya | Izin |
priorityclasses | Izin untuk mengelola PriorityClasses dan menyesuaikan PriorityClasses dalam alur kerja untuk mengontrol penjadwalan pod berdasarkan prioritas pod. |
namespaces | Izin untuk membuat namespaces dan izin penuh pada semua sumber daya di namespaces yang dikelola sendiri. Namun, Anda tidak dapat mengakses sumber daya di namespaces sistem. Namespaces sistem merujuk pada namespaces yang namanya dimulai dengan kube-. Penting Namespace yang dinamai setelah ID kluster adalah namespace sistem Argo. Anda dapat mengelola namespace ini. Misalnya, Anda dapat memodifikasi pengaturan alur kerja Argo di workflow-controller-configmap. |
persistentvolumes | Izin penuh. |
persistentvolumeclaims | Izin penuh pada sumber daya di namespaces yang dikelola sendiri. |
secretsconfigmapsserviceaccounts | Izin penuh pada sumber daya di namespaces yang dikelola sendiri. |
pods | Izin baca pada sumber daya di namespaces yang dikelola sendiri. |
pods/logevents | Izin baca pada sumber daya di namespaces yang dikelola sendiri. |
pods/exec | Izin untuk membuat sumber daya di namespaces yang dikelola sendiri. |
Argo: workflows workflowtasksets workflowtemplates cronworkflows | Izin penuh pada sumber daya di namespaces yang dikelola sendiri. |
Konfigurasikan permintaan CPU dan memori untuk kontainer dalam alur kerja
Kluster alur kerja lebih memilih penggunaan instans wadah elastis preemptible. Instans wadah elastis bayar sesuai pemakaian juga digunakan untuk optimasi biaya. Periode perlindungan instans wadah elastis preemptible adalah 1 jam. Pastikan setiap langkah dalam alur kerja dapat diselesaikan dalam waktu 1 jam.
Instans wadah elastis preemptible hanya mendukung konfigurasi 2 vCPU atau lebih tinggi.
Jika tidak ada permintaan sumber daya yang dikonfigurasi untuk sebuah kontainer atau kurang dari 2 vCPU/4 GiB, sistem akan menggunakan 2 vCPU/4 GiB secara default.
Jika permintaan sumber daya melebihi 2 vCPU/4 GiB, sistem akan secara otomatis mencocokkan instans wadah elastis yang memenuhi spesifikasi.
Tabel berikut menjelaskan permintaan CPU dan memori yang didukung. Kami merekomendasikan agar Anda tidak menyetel permintaan CPU lebih dari 8 vCPU.
vCPU
Memori (GiB)
2
4, 8, dan 16
4
4, 8, 16, dan 32
8
4, 8, 16, 32, dan 64
Paksa instans wadah elastis bayar sesuai pemakaian untuk menjalankan alur kerja
Jika Anda tidak ingin menggunakan instans wadah elastis preemptible untuk menjalankan tugas-tugas penting dalam mode prioritas biaya, Anda dapat memaksa instans wadah elastis bayar sesuai pemakaian untuk menjalankan alur kerja.
Konfigurasikan parameter requests dan limits di bagian Container, seperti yang ditunjukkan dalam kode sampel berikut:
apiVersion: argoproj.io/v1alpha1
kind: Workflow # jenis spesifikasi k8s baru.
metadata:
generateName: hello-world- # nama spesifikasi alur kerja.
spec:
entrypoint: whalesay # panggil template whalesay.
templates:
- name: whalesay # nama template.
container:
image: docker/whalesay
command: [ cowsay ]
args: [ "hello world" ]
resources:
requests:
cpu: 0.5
memory: 1Gi
limits:
cpu: 0.5
memory: 1Gi