Container Compute Service (ACS) diintegrasikan ke dalam kluster terdaftar melalui node virtual. Deploy node virtual di dalam kluster terdaftar untuk mengakses daya komputasi kontainer yang disediakan oleh ACS dan membuat pod sesuai permintaan tanpa perlu merencanakan kapasitas komputasi node.
Cara node virtual menyediakan daya komputasi ACS
Container Compute Service (ACS) adalah layanan kontainer yang menggunakan Kubernetes sebagai antarmukanya dan menyediakan sumber daya komputasi yang memenuhi spesifikasi kontainer. ACS menggunakan arsitektur berlapis yang memisahkan lapisan kontrol Kubernetes dari daya komputasi kontainer yang mendasarinya. Lapisan sumber daya komputasi ACS bertanggung jawab atas penjadwalan dan alokasi sumber daya untuk Pod, sedangkan Kubernetes mengelola beban kerja aplikasi seperti Deployment, Service, StatefulSet, dan CronJob di atas lapisan tersebut.
Anda dapat menghubungkan daya komputasi kontainer ACS ke kluster Kubernetes sebagai node virtual. Hal ini memberikan elastisitas tinggi pada kluster Anda tanpa dibatasi oleh kapasitas komputasi nodenya. Ketika ACS mengambil alih pengelolaan infrastruktur dasar untuk Pod, Kubernetes tidak perlu lagi menangani langsung penempatan dan startup Pod secara individual atau memantau status sumber daya mesin virtual yang mendasarinya. ACS memastikan sumber daya Pod yang diperlukan selalu tersedia.
Dalam kluster terdaftar, instal add-on ack-virtual-node dari Component Center untuk deploy node virtual dan membuat pod ACS. Saat kluster perlu melakukan skala keluar, buat pod ACS pada node virtual sesuai permintaan tanpa perlu merencanakan kapasitas komputasi node. Pod ACS dapat berkomunikasi melalui jaringan dengan pod yang berjalan di node fisik kluster. Untuk informasi lebih lanjut, lihat Kluster terdaftar.
Untuk menggunakan sumber daya secara lebih efisien, memperpendek waktu skala keluar, dan mengurangi biaya, jadwalkan beban kerja berjalan lama yang trafiknya berfluktuasi secara elastis ke node virtual. Saat trafik menurun, segera lepas pod di node virtual untuk mengurangi biaya penggunaan.
Pod di node virtual berjalan dalam lingkungan runtime kontainer yang aman dan terisolasi di ACS. Setiap pod berkorespondensi dengan satu instans ACS.
Saat Anda menjadwalkan Pod ke node virtual, daya komputasi Elastic Container Instance (ECI) digunakan secara default, kecuali jika Anda menentukan ACS.
Prasyarat
Anda telah membuat kluster terdaftar dan menghubungkannya ke kluster Kubernetes di pusat data atau penyedia cloud lain. Disarankan menggunakan Kubernetes versi 1.24 atau lebih baru. Untuk informasi lebih lanjut, lihat Buat kluster terdaftar ACK One.
Anda telah menginstal komponen
ack-virtual-nodeversi 2.13.0 atau lebih baru. Untuk informasi lebih lanjut, lihat Berikan izin RAM kepada komponenack-virtual-nodedan Instal komponenack-virtual-node.
Contoh: gunakan daya komputasi CPU ACS
Mulai versi 2.13.0 atau lebih baru, add-on ack-virtual-node menyediakan daya komputasi baik dari ACS maupun Elastic Container Instance (ECI).
Saat Anda menjadwalkan Pod ke node virtual, daya komputasi Elastic Container Instance (ECI) digunakan secara default kecuali Anda secara eksplisit menentukan ACS.
Untuk menggunakan daya komputasi CPU ACS dalam kluster terdaftar ACK One, lakukan langkah-langkah berikut:
Buat file bernama
nginx.yamldengan isi berikut:apiVersion: apps/v1 kind: Deployment metadata: name: nginx labels: app: nginx spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx alibabacloud.com/acs: "true" # Gunakan daya komputasi ACS. alibabacloud.com/compute-class: general-purpose # Kelas komputasi pod ACS. Nilai default: general-purpose. alibabacloud.com/compute-qos: default # Kelas QoS pod ACS. Nilai default: default. spec: containers: - name: nginx image: mirrors-ssl.aliyuncs.com/nginx:stable-alpine ports: - containerPort: 80 protocol: TCP resources: limits: cpu: 2 requests: cpu: 2Jalankan perintah berikut untuk membuat aplikasi NGINX.
kubectl apply -f nginx.yamlJalankan perintah berikut untuk memeriksa status pod.
kubectl get pods -o wideOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-54bcbc9b66-**** 1/1 Running 0 3m29s 192.168.XX.XXX virtual-kubelet-cn-shanghai-l <none> <none> nginx-54bcbc9b66-**** 1/1 Running 0 3m29s 192.168.XX.XXX virtual-kubelet-cn-shanghai-l <none> <none>Kedua Pod ini dijadwalkan ke node yang memiliki label
type=virtual-kubeletmelaluinodeSelector.Jalankan perintah berikut untuk melihat detail pod NGINX.
kubectl describe pod nginx-54bcbc9b66-****Output yang diharapkan:
Annotations: ProviderCreate: done alibabacloud.com/instance-id: acs-uf6008giwgjxlvn***** alibabacloud.com/pod-ephemeral-storage: 30Gi alibabacloud.com/pod-use-spec: 2-2Gi kubernetes.io/pod-stream-port: 10250 network.alibabacloud.com/enable-dns-cache: false topology.kubernetes.io/region: cn-shanghaiAnotasi
alibabacloud.com/instance-id: acs-uf6008giwgjxlvn*****pada output tersebut mengonfirmasi bahwa pod tersebut merupakan pod ACS.
Contoh: gunakan daya komputasi GPU ACS
Proses penggunaan daya komputasi GPU ACS mirip dengan daya komputasi CPU ACS, tetapi memerlukan versi komponen tertentu dan beberapa konfigurasi tambahan.
Daya komputasi GPU ACS dalam kluster terdaftar saat ini berada dalam pratinjau undangan. Untuk mengajukan akses, submit a ticket.
Usage
...
labels:
# Nyatakan kebutuhan sumber daya GPU ACS dalam label.
alibabacloud.com/compute-class: gpu # Untuk tipe GPU, gunakan nilai tetap 'gpu'.
alibabacloud.com/compute-qos: default # Kelas QoS. Artinya sama seperti untuk daya komputasi ACS biasa.
alibabacloud.com/gpu-model-series: example-model # Seri model GPU. Ganti dengan model aktual Anda, misalnya T4.
...Untuk informasi lebih lanjut tentang kelas komputasi ACS dan kualitas daya komputasi, lihat Pemetaan antara tipe komputasi dan kelas kualitas daya komputasi.
Untuk model GPU yang tersedia untuk
gpu-model-series, lihat Tentukan model GPU dan versi driver untuk Pod ACS yang dipercepat GPU.
Untuk menggunakan daya komputasi GPU ACS dalam kluster terdaftar ACK One, lakukan langkah-langkah berikut:
Buat file bernama
gpu-demo.yamldengan isi berikut.apiVersion: apps/v1 kind: Deployment metadata: name: dep-node-selector-demo labels: app: node-selector-demo spec: replicas: 1 selector: matchLabels: app: node-selector-demo template: metadata: labels: app: node-selector-demo # Atribut ACS alibabacloud.com/acs: "true" # Gunakan daya komputasi ACS. alibabacloud.com/compute-class: gpu alibabacloud.com/compute-qos: default alibabacloud.com/gpu-model-series: example-model # Seri model GPU. Ganti nilai ini dengan model aktual, misalnya T4. spec: containers: - name: node-selector-demo image: registry-cn-hangzhou.ack.aliyuncs.com/acs/stress:v1.0.4 command: - "sleep" - "1000h" resources: limits: cpu: 1 memory: 1Gi nvidia.com/gpu: "1" requests: cpu: 1 memory: 1Gi nvidia.com/gpu: "1"Jalankan perintah berikut untuk membuat beban kerja GPU.
kubectl apply -f gpu-demo.yamlJalankan perintah berikut untuk memeriksa status beban kerja GPU yang sedang berjalan.
kubectl get pod dep-node-selector-demo-9cdf7bbf9-s**** -o yamlOutput yang diharapkan:
phase: Running resources: limits: #other resources nvidia.com/gpu: "1" requests: #other resources nvidia.com/gpu: "1"