Elastic Algorithm Service (EAS) menyediakan fitur pemeriksaan kesehatan yang menggunakan mekanisme pemeriksaan kesehatan Kubernetes. Fitur ini secara otomatis mendeteksi dan memulihkan kontainer yang gagal, memastikan hanya instance sehat yang menerima lalu lintas dan sumber daya tidak dialokasikan ke instance yang tidak sehat. Topik ini menjelaskan cara mengonfigurasi fitur pemeriksaan kesehatan.
Batasan
Fitur pemeriksaan kesehatan hanya dapat dikonfigurasi saat menggunakan gambar kustom yang berisi logika pemeriksaan kesehatan untuk menerapkan layanan.
Cara kerjanya
Fitur pemeriksaan kesehatan EAS memanfaatkan mekanisme pemeriksaan kesehatan Kubernetes untuk mendeteksi dan mengelola status kesehatan serta ketersediaan layanan melalui teknologi probe dan metode pemeriksaan kesehatan. Tabel berikut menjelaskan jenis-jenis probe dan metode pemeriksaan kesehatan.
Jenis-Jenis Probe
Jenis Probe
Deskripsi
Liveness probe
Kubelet menggunakan liveness probe untuk memeriksa apakah kontainer masih hidup, membunuh kontainer yang tidak sehat, dan kemudian melakukan operasi selanjutnya berdasarkan kebijakan restart. Jika sebuah kontainer tidak diperiksa oleh liveness probe, kubelet menganggap bahwa liveness probe mengembalikan Success untuk kontainer tersebut. Ini menunjukkan bahwa kontainer masih hidup.
Readiness probe
Readiness probe digunakan untuk memeriksa apakah sebuah kontainer siap menerima permintaan. Hanya pod yang berada dalam status Ready yang dapat menerima permintaan. Hubungan antara layanan dan titik akhir bergantung pada apakah sebuah pod siap.
Jika nilai field Ready adalah False, Kubernetes menghapus alamat IP pod dari daftar titik akhir yang terkait dengan layanan.
Setelah nilai field Ready berubah menjadi True, Kubernetes menambahkan alamat IP pod ke daftar titik akhir yang terkait dengan layanan.
Startup probe
Kubelet menggunakan startup probe untuk mengetahui kapan sebuah kontainer diluncurkan. Anda dapat menggunakan startup probe untuk memastikan bahwa liveness probe dan readiness probe hanya dikirim ke kontainer setelah kontainer diluncurkan. Startup probe dapat digunakan untuk melakukan pemeriksaan liveness pada kontainer yang memiliki kecepatan mulai lambat. Dengan cara ini, kontainer tidak dibunuh oleh kubelet sebelum kontainer diluncurkan.
Metode Pemeriksaan Kesehatan
Metode Pemeriksaan Kesehatan
Deskripsi
http_getKirim permintaan HTTP GET untuk memeriksa status kesehatan dan kelangsungan hidup layanan, dan konfirmasi apakah probe berhasil berdasarkan kode status yang dikembalikan.
tcp_socketMencoba membuat koneksi TCP untuk memeriksa status kesehatan dan kelangsungan hidup layanan.
execJalankan perintah tertentu di dalam kontainer dan konfirmasi apakah probe berhasil berdasarkan kode keluar.
Siapkan gambar kustom
Anda dapat memilih kerangka web untuk mengenkapsulasi logika prediksi. Dalam contoh ini, kerangka Flask digunakan. Berikut adalah contoh file app.py:
import json
from flask import Flask, request, make_response
app = Flask(__name__)
@app.route('/', methods = ['GET','POST'])
def process_handle_func():
"""
Parse badan permintaan berdasarkan kebutuhan bisnis Anda.
"""
data = request.get_data().decode('utf-8')
body = json.loads(data)
res = process(body)
"""
Konfigurasikan respons berdasarkan kebutuhan bisnis Anda.
"""
response = make_response(res)
response.status_code = 200
return response
def process(data):
"""
Logika prediksi Anda
"""
return 'result'
if __name__ == '__main__':
"""
Anda harus mengatur parameter host ke 0.0.0.0. Jika tidak, pemeriksaan kesehatan mungkin gagal selama penyebaran layanan.
Nomor port yang Anda tentukan untuk parameter port harus sama dengan nomor port yang ditentukan dalam file konfigurasi JSON layanan yang Anda sebarkan.
"""
app.run(host='0.0.0.0', port=8000)Tulis Dockerfile sederhana untuk menyalin kode prediksi ke dalam file dan menginstal paket yang diperlukan. Contoh berikut menunjukkan isi Dockerfile:
# Dalam contoh ini, Python digunakan.
FROM registry.cn-shanghai.aliyuncs.com/eas/bashbase-amd64:0.0.1
COPY ./process_code /eas
RUN /xxx/pip install Nama paket yang Anda butuhkan
CMD ["/xxx/python", "/eas/xxx/app.py"] Untuk informasi tentang cara membuat gambar kustom, lihat Gunakan instance Container Registry Enterprise Edition untuk membangun gambar. Untuk detail lebih lanjut tentang gambar kustom, lihat Sebarkan layanan model menggunakan gambar kustom. Anda juga dapat menyimpan kode di File Storage NAS (NAS) atau repositori Git, kemudian pasang penyimpanan ke instance layanan untuk menulis kode selama penyebaran layanan. Untuk informasi lebih lanjut, lihat Pasang penyimpanan ke layanan. Bagian berikut menjelaskan cara mengonfigurasi fitur pemeriksaan kesehatan selama penyebaran layanan dengan menyalin kode prediksi ke Dockerfile.
Konfigurasikan fitur pemeriksaan kesehatan selama penyebaran layanan
Konfigurasikan fitur pemeriksaan kesehatan di konsol PAI
Masuk ke konsol PAI. Pilih wilayah di bagian atas halaman, pilih ruang kerja yang diinginkan, dan klik Enter Elastic Algorithm Service (EAS).
Klik Deploy Service. Di bagian Custom Model Deployment, klik Custom Deployment.
Di bagian Environment Information halaman Custom Deployment, konfigurasikan parameter kunci berikut. Untuk informasi tentang parameter lainnya, lihat Parameter untuk penyebaran kustom di konsol.
Parameter
Deskripsi
Image Configuration
Pilih Image Address dan masukkan alamat gambar kustom yang telah disiapkan. Contoh:
registry-vpc.cn-shanghai.aliyuncs.com/xxx/yyy:zzz.Command to Run
Perintah entri gambar. Anda hanya dapat memasukkan satu perintah. Skrip kompleks tidak didukung. Perintah harus sesuai dengan perintah dalam Dockerfile. Contoh:
/data/eas/ENV/bin/python /data/eas/app.py.Anda juga harus memasukkan nomor port, yaitu port HTTP lokal tempat gambar mendengarkan setelah gambar dimulai. Contoh: 8000.
PentingKami sarankan Anda tidak menentukan port 8080 dan port 9090 karena mesin EAS mendengarkan di port tersebut.
Nomor port harus sama dengan nomor port yang dikonfigurasi di file xxx.py yang ditentukan dalam perintah.
Health Check
Aktifkan Health Check. Setelah mengonfigurasi parameter terkait, dan klik OK. Untuk instruksi konfigurasi parameter rinci, lihat Parameter pemeriksaan kesehatan.
CatatanAnda dapat menambahkan hingga tiga item pemeriksaan kesehatan, masing-masing dengan satu jenis probe. Jenis probe tidak boleh duplikat.
Setelah mengonfigurasi parameter, klik Deploy.
Konfigurasikan fitur pemeriksaan kesehatan pada klien lokal
Unduh klien EASCMD dan lengkapi autentikasi identitas. Dalam contoh ini, Windows 64-bit digunakan.
Buat file konfigurasi layanan bernama
service.jsondi direktori tempat klien berada. Contoh berikut menunjukkan isi file:{ "metadata": { "name": "test", "instance": 1, "enable_webservice": true }, "cloud": { "computing": { "instance_type": "ml.gu7i.c16m60.1-gu30" } }, "containers": [ { "image":"registry-vpc.cn-shanghai.aliyuncs.com/xxx/yyy:zzz", "env":[ { "name":"VAR_NAME", "value":"var_value" } ], "liveness_check":{ "http_get":{ "path":"/", "port":8000 }, "initial_delay_seconds":3, "period_seconds":3, "timeout_seconds":1, "success_threshold":2, "failure_threshold":4 }, "command":"/data/eas/ENV/bin/python /data/eas/app1.py", "port":8000 } ] }Tabel berikut menjelaskan parameter kunci. Untuk informasi tentang parameter lainnya, lihat Semua Parameter Layanan Model.
Parameter
Deskripsi
image
Alamat gambar kustom yang digunakan untuk menerapkan layanan model.
EAS tidak mendukung akses Internet. Anda perlu mengakses gambar menggunakan endpoint VPC repositori gambar tempat gambar diunggah. Contoh:
registry-vpc.cn-shanghai.aliyuncs.com/xxx/yyy:zzz.env
name
Nama variabel lingkungan yang digunakan untuk meluncurkan kontainer berdasarkan gambar.
value
Nilai variabel lingkungan yang digunakan untuk meluncurkan kontainer berdasarkan gambar.
command
Perintah entri gambar. Anda hanya dapat memasukkan satu perintah. Skrip kompleks, seperti
/data/eas/ENV/bin/python /data/eas/app.py, tidak didukung.port
Port jaringan tempat proses dalam gambar mendengarkan. Contoh: 8000.
PentingNomor port harus sesuai dengan nomor port yang dikonfigurasi di file xxx.py yang ditentukan di command.
liveness_check
Catatanliveness_check menunjukkan bahwa probe liveness digunakan dalam pemeriksaan kesehatan. Anda juga dapat menentukan health_check atau startup_check.
http_get
Metode pemeriksaan HTTP GET yang digunakan untuk mengirim permintaan melalui port 8000. Perhatikan parameter berikut:
http_get.path: titik akhir server HTTP tempat Anda melakukan pemeriksaan kesehatan. Awalan titik akhir adalah
http://localhost. Anda harus menentukan akhiran kustom untuk titik akhir. Akhiran default adalah/.http_get.port: port tempat Anda melakukan pemeriksaan kesehatan pada HTTP Server.
Anda juga dapat menggunakan metode pemeriksaan kesehatan berikut:
tcp_socket: Lakukan pemeriksaan TCP menggunakan alamat IP dan nomor port kontainer. Jika koneksi TCP terbentuk, kontainer sehat. Metode konfigurasi:
"tcp_socket":{ "port":8000 }exec: Jalankan perintah tertentu di dalam kontainer. Jika kode keluar adalah 0 setelah eksekusi berhasil, pemeriksaan kesehatan berhasil. Metode konfigurasi:
"exec":{ "command":[ "your_script", "with_args" ] }
initial_delay_seconds
Waktu yang diperlukan untuk memulai pemeriksaan kesehatan pertama setelah kontainer diluncurkan. Nilai default: 0. Unit: detik.
period_seconds
Frekuensi pemeriksaan kesehatan. Nilai default: 10. Unit: detik. Frekuensi tinggi menghasilkan overhead tambahan untuk pod. Frekuensi rendah dapat menyebabkan kesalahan kontainer diabaikan.
timeout_seconds
Periode waktu habis pemeriksaan kesehatan. Nilai default: 1. Unit: detik. Jika pemeriksaan kesehatan habis waktu, pemeriksaan kesehatan dianggap gagal.
success_threshold
Jumlah minimum pemeriksaan kesehatan gagal berturut-turut setelah pemeriksaan kesehatan berhasil sebelum layanan dianggap tidak sehat. Nilai default untuk readiness probe: 3. Nilai default untuk liveness dan startup probe: 1.
failure_threshold
Jumlah minimum pemeriksaan kesehatan berhasil berturut-turut setelah pemeriksaan kesehatan gagal sebelum layanan dianggap sehat. Nilai default: 1.
Jalankan perintah berikut di direktori tempat file JSON berada untuk menerapkan layanan. Untuk informasi lebih lanjut, lihat Jalankan perintah untuk menggunakan klien EASCMD.
eascmdwin64.exe create service.json