Topik ini menjelaskan cara menjadwalkan pod dari kluster terdaftar ACK One ke daya komputasi Alibaba Cloud Serverless (ACS) menggunakan node virtual. Node virtual memungkinkan Anda menjalankan workload pada ACS tanpa perlu menyediakan atau mengelola node fisik.
Cara kerja
Node virtual mengintegrasikan daya komputasi ACS ke dalam kluster terdaftar ACK One Anda. Setelah komponen ack-virtual-node diinstal, sebuah node virtual akan dibuat di kluster Anda. Saat Anda menjadwalkan pod ke node virtual tersebut, ACS secara otomatis menyediakan sumber daya komputasi arsitektur tanpa server untuk pod tersebut. Pod tersebut berjalan di lingkungan terisolasi pada ACS dan dapat berkomunikasi dengan pod lain di kluster. Node virtual sangat ideal untuk workload dengan pola lalu lintas yang bervariasi atau tidak dapat diprediksi karena dapat diskalakan sesuai permintaan tanpa perlu menyediakan atau mengelola node fisik.
Untuk informasi selengkapnya tentang node virtual, lihat Ikhtisar kluster terdaftar.
Prasyarat
Anda telah membuat kluster terdaftar ACK One dan menghubungkannya ke kluster Kubernetes. Diperlukan Kubernetes versi 1.24 atau lebih baru. Untuk informasi selengkapnya, lihat Buat kluster terdaftar ACK One.
Komponen
ack-virtual-nodeversi 2.13.0 atau lebih baru telah diinstal di kluster terdaftar. Untuk informasi selengkapnya, lihat Instal komponen ack-virtual-node.
Konfigurasikan izin RAM untuk komponen ack-virtual-node
onectl
Instal onectl di mesin lokal Anda. Untuk informasi selengkapnya, lihat Gunakan onectl untuk mengelola kluster terdaftar.
Jalankan perintah berikut untuk mengonfigurasi izin RAM untuk komponen
ack-virtual-node:onectl ram-user grant --addon ack-virtual-nodeOutput yang diharapkan:
Ram policy ack-one-registered-cluster-policy-ack-virtual-node granted to ram user ack-one-user-ce313528c3 successfully.
Console
Sebelum menginstal komponen, buat Pengguna RAM, berikan izin yang diperlukan, dan buat AccessKey untuknya. Anda akan menggunakan AccessKey ini untuk membuat Secret yang memungkinkan komponen mengakses layanan cloud.
(Opsional) Buat kebijakan kustom. Gunakan konten kebijakan berikut.
Berikan izin kepada Pengguna RAM. Anda dapat melampirkan kebijakan sistem
AliyunECIFullAccess,AliyunVPCReadOnlyAccess, danAliyunAccFullAccess, atau lampirkan kebijakan kustom yang telah Anda buat.Buat AccessKey untuk Pengguna RAM tersebut.
PeringatanKonfigurasikan kebijakan akses jaringan seperti yang dijelaskan dalam Kebijakan kontrol akses jaringan untuk AccessKey untuk membatasi panggilan AccessKey hanya pada lingkungan jaringan tepercaya. Hal ini meningkatkan keamanan AccessKey Anda.
Gunakan AccessKey tersebut untuk membuat Secret bernama
alibaba-addon-secretdi kluster terdaftar.kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your access key id>' --from-literal='access-key-secret=<your access key secret>'Di sini
<your access key id>dan<your access key secret>adalah nilai AccessKey yang Anda peroleh pada langkah sebelumnya.Saat Anda menginstal komponen
ack-virtual-node, komponen tersebut secara otomatis menggunakan AccessKey ini untuk mengakses layanan cloud yang sesuai.
Contoh: Gunakan daya komputasi CPU ACS
Setelah Anda menginstal atau memperbarui komponen ack-virtual-node ke versi 2.13.0 atau lebih baru, komponen tersebut mendukung daya komputasi ACS maupun Elastic Container Instance (ECI).
Dalam skenario di mana pod dijadwalkan ke node virtual, ECI digunakan secara default jika Anda tidak menentukan ACS sebagai tipe daya komputasi.
Lakukan langkah-langkah berikut untuk menggunakan daya komputasi CPU ACS dengan kluster terdaftar ACK One:
Perbarui konfigurasi grup keamanan kluster terdaftar.
Pada halaman Basic Information kluster, klik ID Control Plane Security Group.
Pada halaman detail grup keamanan, klik Add Rule. Konfigurasikan aturan dengan nilai-nilai berikut.
Rule Type
Protocol
Port Range
Source IP Range
Description
Inbound
TCP
80
Blok CIDR kluster IDC, misalnya, 192.168.1.0/24.
Untuk mengonfigurasi skenario titik akhir ACS.
Inbound
TCP
443
Blok CIDR kluster IDC, misalnya, 192.168.1.0/24.
Untuk mengonfigurasi skenario titik akhir ACS.
Inbound
TCP
10250
Blok CIDR kluster IDC, misalnya, 192.168.1.0/24.
Port yang didengarkan oleh layanan kubelet arsitektur tanpa server.
Buat Penyebaran yang menggunakan daya komputasi ACS.
Buat file bernama
nginx.yamldan salin konten berikut ke dalam file tersebut: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" # Konfigurasikan untuk menggunakan daya komputasi ACS. alibabacloud.com/compute-class: general-purpose # Konfigurasikan tipe daya komputasi untuk pod ACS. alibabacloud.com/compute-qos: default # Konfigurasikan kualitas daya komputasi untuk pod ACS. 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 penyebaran:
kubectl get pods -o wideOutput yang diharapkan (disederhanakan):
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>Output tersebut menunjukkan bahwa kedua pod dijadwalkan ke node dengan label
type=virtual-kubelet.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-shanghaiJika output berisi
Annotation alibabacloud.com/instance-id: acs-uf6008giwgjxlvn*****, maka pod tersebut merupakan instans pod ACS.
Contoh: Gunakan daya komputasi GPU ACS
Daya komputasi GPU ACS untuk kluster terdaftar ACK One sedang dalam pratinjau undangan. Untuk mengaktifkan fitur ini, submit a tick.
Konfigurasikan workload GPU
Setelah fitur diaktifkan, Anda dapat mengonfigurasi workload GPU. Contoh berikut menunjukkan label yang diperlukan untuk menjadwalkan pod ke daya komputasi GPU ACS:
...
labels:
# Deklarasikan persyaratan sumber daya GPU ACS dalam label.
alibabacloud.com/compute-class: gpu # Jika tipe-nya GPU, atur ke gpu.
alibabacloud.com/compute-qos: default # Tipe QoS untuk komputasi. Maknanya sama seperti daya komputasi ACS biasa.
alibabacloud.com/gpu-model-series: GN8IS # Model GPU. Ganti dengan model aktual.
...Untuk informasi selengkapnya tentang kelas komputasi ACS dan kelas QoS, lihat Pemetaan antara tipe komputasi dan kualitas daya komputasi.
Untuk model GPU yang tersedia untuk label
gpu-model-series, lihat Tentukan model GPU dan versi driver untuk pod GPU ACS.
Buat workload GPU menggunakan contoh YAML 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 # Properti ACS alibabacloud.com/acs: "true" # Konfigurasikan untuk menggunakan daya komputasi ACS. alibabacloud.com/compute-class: gpu alibabacloud.com/compute-qos: default alibabacloud.com/gpu-model-series: example-model # Model kartu GPU. Ganti sesuai kebutuhan, 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 memeriksa status berjalan workload GPU:
kubectl get pod node-selector-demo-9cdf7bbf9-s**** -oyamlOutput yang diharapkan:
phase: Running resources: limits: #other resources nvidia.com/gpu: "1" requests: #other resources nvidia.com/gpu: "1"
Contoh: Gunakan daya komputasi GPU HPN ACS
Proses penggunaan daya komputasi GPU HPN ACS mirip dengan penggunaan daya komputasi CPU ACS, tetapi memiliki persyaratan berikut:
Anda harus membeli reservasi kapasitas GPU-HPN terlebih dahulu dan mengaitkannya dengan kluster.
Daya komputasi GPU HPN ACS memerlukan peningkatan komponen
ack-virtual-node. Versi komponen yang diperlukan saat ini sedang dalam pratinjau undangan. Untuk mengaktifkan fitur ini, submit a ticket.
Konfigurasikan workload GPU HPN
Untuk menggunakan daya komputasi GPU HPN ACS, konfigurasikan label berikut dalam spesifikasi pod Anda:
...
labels:
# Deklarasikan persyaratan sumber daya GPU ACS dalam label.
alibabacloud.com/compute-class: gpu-hpn # Atur ke tipe gpu-hpn.
alibabacloud.com/compute-qos: default # Tipe QoS komputasi. Maknanya sama seperti daya komputasi ACS biasa.
alibabacloud.com/acs: "true" # Label untuk mengonfigurasi penggunaan daya komputasi ACS.
...Untuk informasi selengkapnya tentang hubungan antara tipe komputasi ACS dan kualitas daya komputasi, lihat Hubungan antara tipe komputasi dan kualitas daya komputasi.
Untuk informasi selengkapnya tentang parameter lain dari pod ACS, lihat ACS Pod.
Node tipe ACS GPU HPN hanya dapat menjadwalkan pod dengan kelas komputasi
gpu-hpn. Persyaratan sumber daya GPU dapat dihilangkan dari deklarasi sumber daya pod. Node ini tidak dapat menjadwalkan pod dengan kelas komputasi lain atau pod yang tidak memiliki deklarasi kelas komputasi.
Gunakan
nodeSelectorKubernetes untuk menjadwalkan Pod ke node GPU HPN. Contohnya: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 # Properti ACS alibabacloud.com/compute-class: gpu-hpn alibabacloud.com/compute-qos: default alibabacloud.com/acs: "true" spec: # Tentukan label node reservasi gpu-hpn nodeSelector: alibabacloud.com/node-type: reserved 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" # Masukkan nama sumber daya yang sesuai berdasarkan model kartu aktual. requests: cpu: 1 memory: 1Gi nvidia.com/gpu: "1" # Masukkan nama sumber daya yang sesuai berdasarkan model kartu aktual.PentingUntuk pod tipe ACS GPU HPN, perhatikan konfigurasi bidang berikut:
Tentukan kelas komputasi:
alibabacloud.com/compute-class: gpu-hpn.Tentukan label node reservasi:
alibabacloud.com/node-type: reserved.Untuk nama sumber daya perangkat di bidang
requestsdanlimitsdalam spesifikasi sumber daya, gunakan model perangkat aktual, seperti NVIDIA.
Lihat status berjalan workload GPU.
kubectl get pod node-selector-demo-9cdf7bbf9-s**** -oyamlOutput berikut adalah cuplikan informasi penting:
phase: Running resources: limits: #other resources nvidia.com/gpu: "1" requests: #other resources nvidia.com/gpu: "1"