Elastic Container Instance mendukung instance preemptible. Anda dapat menjalankan pekerjaan jangka pendek dan aplikasi tanpa status yang memiliki skalabilitas tinggi serta toleransi kesalahan, seperti layanan situs web yang dapat diskalakan, pada instance ini untuk mengurangi biaya penggunaan. Topik ini menjelaskan cara membuat pod berbasis Elastic Container Instance preemptible guna menjalankan pekerjaan.
Informasi latar belakang
Sebelum menggunakan instance kontainer elastis preemptible, perhatikan hal-hal berikut:
Aturan Penagihan
Harga pasar instance preemptible berfluktuasi berdasarkan penawaran dan permintaan untuk spesifikasi instansinya. Saat membuat instance preemptible, Anda harus menentukan kebijakan penawaran. Jika harga penawaran Anda lebih tinggi dari harga pasar waktu nyata dan inventaris sumber daya mencukupi, instance preemptible akan dibuat. Setelah pembuatan, instance memasuki periode perlindungan selama 1 jam, di mana ia ditagih berdasarkan harga pasar saat pembelian. Setelah periode perlindungan berakhir, instance ditagih berdasarkan harga pasar waktu nyata.
Mekanisme Penarikan
Setelah periode perlindungan berakhir, sistem memeriksa harga pasar dan inventaris sumber daya setiap 5 menit. Jika harga pasar waktu nyata melebihi harga penawaran Anda atau inventaris tidak mencukupi, instance preemptible dilepaskan. Elastic Container Instance mengirimkan peristiwa ke daftar peristiwa Kubernetes sekitar 5 menit sebelum pelepasan. Selama periode ini, Anda dapat melakukan operasi tertentu, seperti mengonfigurasi untuk menolak arah masuk, guna mencegah gangguan bisnis.
Metode Pembuatan
Anda dapat membuat instance kontainer elastis preemptible dengan menentukan tipe ECS instance atau jumlah vCPU dan ukuran memori.
Metode Konfigurasi
Tambahkan Anotasi
k8s.aliyun.com/eci-spot-strategyke metadata dalam file konfigurasi pod untuk membuat instance preemptible. Anotasi ini menentukan kebijakan penawaran untuk instance tersebut.Nilai yang valid:
SpotAsPriceGo: Instance dibuat sebagai preemptible dengan harga pasar saat pembelian digunakan sebagai harga penawaran.
SpotWithPriceLimit: Instance dibuat sebagai preemptible dengan harga maksimum per jam yang ditentukan. Jika menggunakan nilai ini, tambahkan anotasi
k8s.aliyun.com/eci-spot-price-limituntuk menentukan harga maksimum per jam.
Untuk informasi lebih lanjut, lihat Buat instance kontainer elastis preemptible.
Prosedur
Dalam Kubernetes, pekerjaan digunakan untuk memproses tugas jangka pendek dan satu kali secara batch. Bagian ini memberikan contoh cara menjalankan pekerjaan pada instance preemptible:
Siapkan file konfigurasi pekerjaan dan beri nama spot_job.yaml.
apiVersion: batch/v1 kind: Job metadata: name: pi spec: template: metadata: annotations: k8s.aliyun.com/eci-use-specs: ecs.c5.large,2-4Gi # Menentukan beberapa spesifikasi instance untuk meningkatkan tingkat keberhasilan pembuatan instance. k8s.aliyun.com/eci-spot-strategy: SpotAsPriceGo # Harga pasar saat ini secara otomatis digunakan sebagai harga penawaran. spec: containers: - name: pi image: registry-vpc.cn-beijing.aliyuncs.com/ostest/perl command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"] restartPolicy: NeverBuat pekerjaan.
kubectl create -f spot_job.yamlPeriksa status pod.
kubectl get podJika pekerjaan sedang berjalan, status pod adalah Running.
NAME READY STATUS RESTARTS AGE pi-frmr8 1/1 Running 0 35sJika pekerjaan selesai sesuai harapan, status pod berubah menjadi Completed.
NAME READY STATUS RESTARTS AGE pi-frmr8 0/1 Completed 0 2hJika pod dilepaskan sebelum pekerjaan selesai karena mekanisme penarikan instance preemptible, Job Controller di Kubernetes secara otomatis membuat pod baru untuk melanjutkan pekerjaan.
Dalam hal ini, informasi pod asli dipertahankan dan status pod berubah menjadi BidFailed.
CatatanSetelah instance preemptible dibuat, ia berjalan sesuai harapan selama periode perlindungan. Setelah periode perlindungan berakhir, instance dilepaskan jika harga pasar lebih tinggi dari harga penawaran Anda atau inventaris sumber daya tidak mencukupi. Peristiwa pra-rilis (SpotToBeReleased) dihasilkan sekitar 5 menit sebelum pelepasan. Untuk informasi lebih lanjut, lihat Pelepasan instance preemptible.
NAME READY STATUS RESTARTS AGE pi-frmr8 1/1 BidFailed 0 4h53m pi-kp5zx 1/1 Running 0 3h45m