Jika citra resmi yang disediakan oleh Elastic Algorithm Service (EAS) tidak memenuhi kebutuhan bisnis atau lingkungan Anda, Anda dapat menggunakan custom image untuk mengemas lingkungan runtime yang lengkap. Metode ini menyediakan cara yang fleksibel dan andal untuk menerapkan layanan model.
Perencanaan repository image
Saat menerapkan layanan, EAS menarik citra dari repository image. Kami merekomendasikan penggunaan Container Registry (ACR) Alibaba Cloud untuk menyimpan citra Anda. Menarik citra melalui alamat VPC memberikan kinerja dan keamanan yang lebih baik.
Menarik citra melalui jaringan publik lambat dan menimbulkan risiko keamanan. Metode ini tidak direkomendasikan.
ACR Personal Edition
ACR Personal Edition gratis tetapi hanya dapat diaktifkan dan digunakan dalam satu wilayah saja. Untuk menarik citra lintas wilayah, Anda harus menggunakan alamat jaringan publik.
Kami merekomendasikan penggunaan ACR Personal Edition hanya untuk skenario pengujian. Pastikan instans ACR Personal Edition berada di wilayah yang sama dengan layanan EAS Anda.
ACR Enterprise Edition
ACR Enterprise Edition menyediakan peningkatan keamanan, kinerja, serta kemampuan sinkronisasi global. Hal ini memungkinkan layanan EAS menarik citra secara aman dan cepat melalui jaringan internal, baik dalam wilayah yang sama maupun lintas wilayah.
Edisi ini direkomendasikan untuk lingkungan produksi.
Repositori Citra Buatan Sendiri
Jika Anda menggunakan repository image buatan sendiri, seperti Harbor, di dalam VPC Alibaba Cloud, repository tersebut hanya dapat diakses dari dalam VPC tersebut. Mirip dengan ACR Enterprise Edition, Anda harus mengonfigurasi VPC untuk layanan EAS agar repository image dan layanan EAS berada dalam VPC yang sama.
Otentikasi Identitas Repositori Citra
Jika Anda menggunakan repositori gambar pribadi yang memerlukan otentikasi, Anda harus menyediakan username dan password selama penerapan layanan.
Dalam file konfigurasi JSON, tentukan informasi otentikasi menggunakan parameter dockerAuth. Atur nilainya menjadi string Base64 dari username:password.
Sebagai contoh, untuk abcd:abcde12345, jalankan perintah echo -n "abcd:abcde12345" | base64. Perintah tersebut mengembalikan YWJjZDphYmNkZTEy****. Gunakan nilai ini untuk parameter dockerAuth.
{"dockerAuth": "YWJjZDphYmNkZTEy****"}Saat menggunakan repository image ACR dalam wilayah yang sama dan di bawah Akun Alibaba Cloud yang sama, EAS dapat menarik citra tanpa kata sandi. Anda tidak perlu memasukkan username atau password.
Memulai: Buat dan terapkan custom image
Bagian ini menjelaskan cara membangun citra layanan web tingkat produksi berbasis Gunicorn dan Flask pada instans ECS Alibaba Cloud, mendorong citra tersebut ke repository image ACR, lalu menerapkannya sebagai layanan online EAS.
Langkah 1: Siapkan lingkungan
Sebelum memulai, pastikan lingkungan dan resource berikut telah siap:
Virtual Private Cloud (VPC): Layanan EAS, instans ECS, dan repository image ACR harus berkomunikasi melalui VPC untuk memastikan stabilitas dan keamanan proses dorong dan tarik citra.
Container Registry (ACR): ACR digunakan untuk menyimpan dan mengelola custom image Anda. Untuk informasi lebih lanjut tentang cara menyiapkan instans ACR Enterprise Edition serta membuat namespace dan repository image yang diperlukan, lihat Gunakan instans Edisi Perusahaan untuk mendorong dan menarik citra.
Lingkungan pengembangan: Anda dapat membuat instans ECS dengan konfigurasi berikut untuk membangun citra.
Tipe Instans: ecs.u1-c1m2.large
Citra: Alibaba Cloud Linux 3.2104 LTS (64-bit)
Ekstensi: Docker Community Edition
Jaringan: Anda harus menambahkan VPC yang dipilih ke pengaturan kontrol akses instans ACR Enterprise Edition. Jika tidak, Anda tidak dapat mendorong citra ke repository image ACR. Untuk informasi lebih lanjut, lihat Konfigurasikan kontrol akses untuk instans ACR melalui VPC.
CatatanAnda juga dapat menggunakan lingkungan pengembangan lokal atau lainnya.
Lingkungan pengembangan lokal: Anda dapat menginstal dan menjalankan Docker untuk membangun citra secara lokal.
Gunakan lingkungan pengembangan DSW: Di kolom Aksi untuk instans DSW, klik Create Image. Aksi ini membangun citra Docker dan menyimpannya ke Alibaba Cloud Container Registry (ACR). Saat penerapan, pilih Custom Image lalu pilih citra dari daftar drop-down. Untuk informasi lebih lanjut, lihat Buat citra instans DSW.
Langkah 2: Siapkan file aplikasi
Buat folder proyek, misalnya my-app, lalu tambahkan tiga file berikut ke dalam folder tersebut:
requirements.txt(dependensi aplikasi)flask gunicornapp.py(kode aplikasi web)from flask import Flask app = Flask(__name__) @app.route('/hello/model') def hello_world(): # Anda dapat mengintegrasikan inferensi model atau logika bisnis lainnya di sini. return 'Hello World from Gunicorn!' # Catatan: app.run() tidak diperlukan. Aplikasi akan dijalankan oleh Gunicorn.
Dockerfile(instruksi pembuatan citra)# 1. Gunakan citra Python resmi yang ringan sebagai dasar. FROM python:3.9-slim # 2. Tetapkan direktori kerja. WORKDIR /app # 3. Salin dan instal file dependensi. Ini memanfaatkan mekanisme cache Docker untuk mempercepat build berikutnya. COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ # 4. Salin kode aplikasi. COPY app.py . # 5. Deklarasikan port layanan. EXPOSE 8000 # 6. Definisikan perintah default saat kontainer dijalankan. Ini dapat ditimpa oleh "Run Command" di Konsol EAS. CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "app:app"]
Langkah 3: Bangun dan dorong citra
Buka terminal dan masuk ke folder proyek (
my-app).Login ke instans ACR Anda. Ganti placeholder dalam perintah dengan informasi aktual Anda.
# Contoh: docker login --username=your_user my-registry.cn-hangzhou.aliyuncs.com docker login --username=<username> <ACR_repository_domain_name>Bangun citra Docker dan berikan tag lengkap.
# Contoh: docker build -t my-registry.cn-hangzhou.aliyuncs.com/my-namespace/flask-app:v1 . docker build -t <ACR_repository_domain_name>/<namespace>/<image_repository_name>:<version_number> .Dorong citra yang telah dibangun ke ACR.
# Contoh: docker push registry.cn-hangzhou.aliyuncs.com/my-namespace/flask-app:v1 docker push <ACR_repository_domain_name>/<namespace>/<image_repository_name>:<version_number>
Langkah 4: Terapkan layanan
Login ke Konsol PAI. Pilih wilayah di bagian atas halaman. Lalu, pilih ruang kerja yang diinginkan dan klik Elastic Algorithm Service (EAS).
Klik Deploy Service dan pilih .
Konfigurasikan parameter utama berikut:
Pada Deployment Method, pilih Image-based Deployment.
Image Configuration Pilih Image Address dan masukkan alamat citra lengkap yang telah Anda dorong pada langkah sebelumnya.
Karena contoh ini menggunakan repository ACR di bawah Akun Alibaba Cloud yang sama, EAS dapat menarik citra tanpa kata sandi. Anda tidak perlu menyediakan username dan password.
Command to Run
gunicorn -w 4 -b 0.0.0.0:8000 app:appCatatan:
Start Commandyang ditentukan di Konsol EAS menimpa instruksiCMDdalam Dockerfile. Kami merekomendasikan agar Anda menentukan perintah start di sini untuk memudahkan debugging dan modifikasi.Port Number 8000.
Deployment: Untuk contoh ini, pilih resource CPU, seperti
ecs.c6.largedari Public Resources.VPC: Pilih VPC, vSwitch, dan security group.
Pastikan VPC yang Anda pilih di sini telah ditambahkan ke daftar kontrol akses instans ACR. Jika tidak, proses tarik citra gagal karena masalah jaringan. Salah satu error umum adalah
ImagePullBackOff.
Klik Deploy. Layanan berhasil diterapkan ketika status layanan berubah menjadi Running.
Langkah 5: Uji layanan
Setelah layanan diterapkan, dapatkan endpoint dan token. Gunakan perintah berikut untuk menguji layanan Flask:
# Ganti <endpoint> dan <token> dengan endpoint dan token layanan aktual.
curl <endpoint>/hello/model -H "Authorization: <token>"Jika perintah mengembalikan Hello World from Gunicorn!, layanan telah berhasil diterapkan dan dapat diakses.
Untuk informasi lebih lanjut tentang pemanggilan layanan, lihat Metode pemanggilan layanan.
Konsep inti dan batasan
Batasan jaringan: Layanan EAS mengakses resource jaringan internal melalui alamat VPC. Anda biasanya harus mengonfigurasi VPC untuk layanan tersebut. Untuk mengakses resource jaringan publik, seperti menggunakan
pipuntuk menginstal dependensi dari sumber publik, memanggil API eksternal, atau menarik citra melalui jaringan publik, Anda juga harus mengonfigurasi Gateway NAT untuk VPC tersebut. Untuk informasi lebih lanjut, lihat Izinkan layanan EAS mengakses jaringan publik atau resource internal.Tips biaya: Gateway NAT adalah layanan berbayar dan menimbulkan biaya tambahan.
Batasan port: Mesin layanan EAS menggunakan port
8080dan9090. Port pendengar aplikasi Anda tidak boleh menggunakan salah satu dari dua port tersebut. Jika tidak, layanan gagal dijalankan karena konflik port.Injeksi Sidecar: Untuk menerapkan otentikasi dan pemantauan, EAS menyuntikkan kontainer proxy ke dalam instans layanan Anda menggunakan mode Sidecar. Proxy ini transparan tetapi mengonsumsi sedikit resource. Proxy bertugas meneruskan permintaan eksternal ke port layanan yang Anda konfigurasi secara aman.
Dukungan protokol API: Penerapan berbasis citra memungkinkan Anda menyediakan layanan API dari citra melalui HTTP, WebSocket, dan gRPC (HTTP/2).
Rekomendasi untuk aplikasi produksi
Pisahkan citra dan model: Kami merekomendasikan agar Anda memisahkan kode dari file model Anda. Kemas kode ke dalam citra. Simpan model di Object Storage Service (OSS) atau File Storage NAS. Di halaman penerapan EAS, Anda dapat menggunakan fitur storage mount untuk memasang model ke dalam kontainer. Praktik ini sangat mengurangi waktu tarik citra selama pembaruan layanan dan skala keluar.
Tarik citra melalui jaringan internal: Untuk keamanan dan kinerja, kami merekomendasikan agar Anda mengonfigurasi VPC untuk layanan Anda. Hal ini memungkinkan layanan menarik citra dari ACR menggunakan alamat VPC.
Daftarkan citra sebagai aset AI: Jika custom image Anda dapat digunakan dalam berbagai skenario lain, kami merekomendasikan agar Anda menggunakan fitur citra pada PAI AI Assets. Hal ini memungkinkan Anda mengelola citra secara terpusat sebagai aset AI.
Konfigurasikan pemeriksaan kesehatan: Kami merekomendasikan agar Anda mengonfigurasi pemeriksaan kesehatan untuk layanan Anda. EAS menggunakan pemeriksaan kesehatan untuk secara otomatis merestart instans yang tidak sehat dan memastikan stabilitas layanan. Untuk informasi lebih lanjut, lihat Pemeriksaan kesehatan.
Aktifkan skalabilitas otomatis: Jika beban kerja bisnis Anda berfluktuasi secara signifikan, kami merekomendasikan agar Anda mengaktifkan fitur skalabilitas otomatis horizontal. Fitur ini membantu Anda menangani perubahan traffic secara elastis dan hemat biaya.
FAQ
T: Mengapa tarik citra gagal dengan error `ImagePullBackOff`?
Penyebab 1: Kegagalan koneksi jaringan. Ini adalah penyebab paling umum. Periksa apakah VPC yang dikonfigurasi untuk layanan EAS telah ditambahkan ke daftar putih kontrol akses instans ACR. Jika Anda bekerja lintas wilayah, Anda harus menghubungkan VPC melalui CEN. Untuk informasi lebih lanjut, lihat Akses instans ACR Enterprise Edition dari wilayah lain atau IDC. Jika Anda menarik citra melalui jaringan publik, pastikan VPC dengan akses jaringan publik telah dikonfigurasi untuk EAS dan Anda telah mengaktifkan akses publik untuk ACR.
Penyebab 2: Kegagalan otentikasi. Jika Anda menggunakan repositori gambar pribadi yang memerlukan otentikasi (bukan repositori ACR di bawah akun Anda), periksa apakah informasi otentikasi yang Anda masukkan di bagian Image Configuration sudah benar.
Penyebab 3: Citra tidak ditemukan. Periksa apakah alamat citra, namespace, dan nomor versi (tag) sudah benar. Pastikan juga bahwa citra telah berhasil didorong ke repository.
Penyebab 4: Ruang disk sistem tidak mencukupi. Untuk mengatasi masalah ini, Anda dapat memperluas disk sistem.
Untuk informasi lebih lanjut tentang masalah lainnya, lihat FAQ EAS.