Container Compute Service (ACS) mendukung pembuatan aplikasi tanpa status menggunakan gambar kontainer, templat orkestrasi YAML, atau alat baris perintah kubectl. Topik ini menggunakan aplikasi Nginx sebagai contoh untuk menunjukkan cara membuat aplikasi tanpa status di kluster ACS.
Konsol
Buat dari gambar
Langkah 1: Konfigurasikan informasi dasar aplikasi
-
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Workloads > Deployments.
-
Di halaman Deployments, klik Create with Image.
-
Di wizard Basic Information, konfigurasikan pengaturan dasar untuk aplikasi Anda.
configuration item
Description
Name:
Masukkan nama untuk aplikasi.
Replicas:
Jumlah Pod dalam aplikasi. Nilai default adalah 2.
Workloads
Pilih Deployment.
Label
Tambahkan label untuk mengidentifikasi aplikasi ini.
Annotations
Tambahkan anotasi ke aplikasi.
Instance Type
Pilih jenis komputasi. Untuk detail tentang jenis komputasi, lihat Overview of ACS pod instances.
QoS Type
Pilih kelas Quality of Service (QoS).
-
Klik Next untuk menuju wizard Container.
Langkah 2: Konfigurasikan kontainer
Di halaman wizard Container, konfigurasikan gambar kontainer, sumber daya, port, variabel lingkungan, pemeriksaan kesehatan, siklus hidup, volume, dan pencatatan log.
Untuk menambahkan beberapa kontainer ke Pod, klik Add Container di sebelah tab Container 1.
-
Di bagian General, lengkapi konfigurasi dasar kontainer.
configuration item
Description
Image Name
-
Pilih gambar
Klik Select Image untuk memilih gambar yang diperlukan.
-
Container Registry Enterprise Edition: Pilih gambar Edisi Perusahaan yang dihosting di Alibaba Cloud Container Registry (ACR). Anda harus memilih wilayah dan instans ACR tempat gambar tersebut berada. Untuk informasi lebih lanjut tentang ACR, lihat What is Container Registry?.
-
Container Registry Personal Edition (harus diaktifkan terlebih dahulu): Pilih gambar Edisi Pribadi yang dihosting di ACR. Anda harus memilih wilayah dan instans ACR tempat gambar tersebut berada.
-
Artifact center: Menyediakan gambar OS dasar untuk aplikasi berbasis kontainer, gambar runtime bahasa pemrograman, serta gambar terkait AI dan data besar. Contoh ini menggunakan gambar Nginx dari Artifact Center. Untuk informasi lebih lanjut, lihat Artifact Center.
-
-
(Opsional) Atur kebijakan pull gambar
Dari daftar drop-down Image Pull Policy, pilih kebijakan pull. Secara default, tidak ada kebijakan yang ditetapkan, dan Kubernetes menggunakan IfNotPresent.
-
IfNotPresent: Jika gambar sudah tersedia secara lokal (sebelumnya ditarik ke host), gambar tersebut tidak akan ditarik lagi. Jika tidak, gambar akan ditarik.
-
Always: Selalu tarik gambar selama deployment atau skala keluar, mengabaikan salinan lokal apa pun.
-
Never: Gunakan hanya gambar lokal.
-
-
(Opsional) Atur rahasia pull gambar
Klik Set Image Pull Secret untuk mengakses gambar privat secara aman.
-
Untuk instans ACR Edisi Pribadi, Anda dapat menarik gambar kontainer dengan mengatur rahasia pull gambar. Untuk informasi lebih lanjut, lihat Manage secrets.
-
Untuk instans ACR Edisi Perusahaan, Anda dapat menarik gambar tanpa kata sandi menggunakan komponen tanpa kata sandi. Untuk detailnya, lihat Pull ACR images without passwords.
-
Required Resources
Atur kuota sumber daya untuk kontainer.
-
CPU: Tentukan nilai permintaan dan batas CPU. Secara default, permintaan sama dengan batas, dan penagihan menggunakan metode bayar sesuai penggunaan. Jika Anda menetapkan batas berbeda melalui YAML, permintaan akan ditimpa agar sesuai dengan batas. Untuk detailnya, lihat Resource specifications.
-
Memory: Tentukan nilai permintaan dan batas memori. Secara default, permintaan sama dengan batas, dan penagihan menggunakan metode bayar sesuai penggunaan. Jika Anda menetapkan batas berbeda melalui YAML, permintaan akan ditimpa agar sesuai dengan batas. Untuk detailnya, lihat Resource specifications.
Interactive Session
(Opsional) Konfigurasikan opsi startup kontainer.
-
stdin: Kirim input konsol ke kontainer.
-
tty: Sambungkan konsol input standar sebagai input konsol kontainer.
CatatanUmumnya, stdin dan tty dipilih bersama untuk mengikat terminal (tty) ke input standar kontainer (stdin). Misalnya, program interaktif membaca input pengguna dari stdin dan menampilkan output di terminal.
Init Containers
(Opsional) Aktifkan opsi ini untuk membuat init container.
Init container menyediakan mekanisme untuk memblokir atau menunda startup kontainer aplikasi hingga berhasil. Setelah eksekusi berhasil, kontainer aplikasi dalam Pod dimulai secara paralel. Misalnya, Anda dapat menggunakan init container untuk memeriksa ketersediaan layanan dependen. Init container juga dapat mencakup utilitas atau skrip instalasi yang tidak tersedia dalam gambar aplikasi guna menginisialisasi lingkungan runtime—misalnya, mengatur parameter kernel atau menghasilkan file konfigurasi. Untuk informasi lebih lanjut, lihat Init Containers.
-
-
(Opsional) Di bagian Ports, klik Add untuk mengonfigurasi port kontainer.
Configuration Item
Description
Name
Tentukan nama untuk port kontainer.
Container Port
Tentukan port kontainer yang diekspos. Nomor port harus berada dalam rentang 1 hingga 65535.
Protocol
Protokol yang didukung adalah TCP dan UDP.
-
(Opsional) Di bagian Environments, klik Add untuk mengonfigurasi variabel lingkungan.
Anda dapat mengonfigurasi variabel lingkungan untuk Pod menggunakan pasangan kunci-nilai untuk menambahkan flag lingkungan atau meneruskan konfigurasi. Untuk informasi lebih lanjut, lihat Pod Environment Variables.
Parameter
Description
Type
Tentukan tipe variabel lingkungan:
-
Custom
-
ConfigMaps
-
Secrets
-
Value/ValueFrom
-
ResourceFieldRef
ConfigMap dan Secret mendukung referensi seluruh file.
Contoh ini menggunakan Secret. Saat Anda memilih tipe Secrets dan memilih Secret target, semua file dalam Secret tersebut direferensikan secara default. Setelah memilih Secret, masukkan Variable Name dan pilih nama Secret serta kunci yang sesuai dari dua daftar drop-down di sebelah kanan.
Referensi YAML berikut merujuk seluruh Secret:
envFrom: - secretRef: name: testVariable Key
Tentukan nama variabel lingkungan.
Value/ValueFrom
Tentukan nilai variabel yang direferensikan.
-
-
(Opsional) Di bagian Health Check, aktifkan Liveness, Readiness, dan Startup sesuai kebutuhan.
-
Liveness probe: Pemeriksaan kelangsungan hidup memeriksa apakah kontainer sedang berjalan. Jika pemeriksaan gagal beberapa kali, kubelet akan me-restart kontainer. Hal ini dapat membantu menyelesaikan masalah seperti deadlock di mana kontainer berjalan tetapi tidak dapat melanjutkan proses.
-
Readiness probe: Pemeriksaan kesiapan memeriksa apakah kontainer siap menerima trafik. Pod ditambahkan sebagai backend ke Service hanya setelah pemeriksaan kesiapannya berhasil.
-
Startup Probes: Pemeriksaan ini hanya dijalankan saat kontainer dimulai untuk memeriksa apakah telah berhasil dimulai. Liveness Probes dan Readiness Probes hanya dijalankan setelah pemeriksaan startup berhasil.
Untuk informasi lebih lanjut, lihat Configure liveness, readiness, and startup probes.
Parameter
Description
HTTP
Mengirim permintaan HTTP GET ke kontainer. Parameter yang didukung meliputi:
-
Protocol: HTTP atau HTTPS.
-
Path: Jalur untuk mengakses server HTTP.
-
Port: Port kontainer yang diekspos atau nama port. Nomor port harus berada dalam rentang 1 hingga 65535.
-
HTTP Header: Header permintaan kustom dalam permintaan HTTP. HTTP memungkinkan header duplikat. Konfigurasikan sebagai pasangan kunci-nilai.
-
Initial Delay (s): Parameter initialDelaySeconds menentukan jumlah detik yang ditunggu setelah kontainer dimulai sebelum pemeriksaan pertama dilakukan. Nilai default adalah 3 detik.
-
Period (s): Parameter periodSeconds menentukan interval antar pemeriksaan. Nilai default adalah 10 detik dengan minimum 1 detik.
-
Timeout (s): Parameter timeoutSeconds menentukan durasi timeout untuk setiap pemeriksaan. Nilai default adalah 1 detik dengan minimum 1 detik.
-
Healthy Threshold: Jumlah minimum pemeriksaan sukses berturut-turut yang diperlukan setelah kegagalan untuk menandai kontainer sebagai sehat. Nilai default adalah 1 dengan minimum 1. Untuk pemeriksaan kelangsungan hidup, nilai ini harus 1.
-
Unhealthy Threshold: Jumlah minimum pemeriksaan gagal berturut-turut yang diperlukan setelah keberhasilan untuk menandai kontainer sebagai tidak sehat. Nilai default adalah 3 dengan minimum 1.
TCP
Membuka soket TCP ke kontainer. Kubelet mencoba membuka soket pada port yang ditentukan. Jika berhasil, kontainer dianggap sehat; jika tidak, ditandai sebagai gagal. Parameter yang didukung meliputi:
-
Port: Port kontainer yang diekspos atau nama port. Nomor port harus berada dalam rentang 1 hingga 65535.
-
Initial Delay (s): Parameter initialDelaySeconds menentukan jumlah detik yang ditunggu setelah kontainer dimulai sebelum pemeriksaan pertama dilakukan. Nilai default adalah 15 detik.
-
Period (s): Parameter periodSeconds menentukan interval antar pemeriksaan. Nilai default adalah 10 detik dengan minimum 1 detik.
-
Timeout (s): Parameter timeoutSeconds menentukan durasi timeout untuk setiap pemeriksaan. Nilai default adalah 1 detik dengan minimum 1 detik.
-
Healthy Threshold: Jumlah minimum pemeriksaan sukses berturut-turut yang diperlukan setelah kegagalan untuk menandai kontainer sebagai sehat. Nilai default adalah 1 dengan minimum 1. Untuk pemeriksaan kelangsungan hidup, nilai ini harus 1.
-
Unhealthy Threshold: Jumlah minimum pemeriksaan gagal berturut-turut yang diperlukan setelah keberhasilan untuk menandai kontainer sebagai tidak sehat. Nilai default adalah 3 dengan minimum 1.
Command
Menjalankan perintah di dalam kontainer untuk memeriksa kesehatannya. Parameter yang didukung meliputi:
-
Command: Perintah yang digunakan untuk memeriksa kesehatan kontainer.
-
Initial Delay (s): Parameter initialDelaySeconds menentukan jumlah detik yang ditunggu setelah kontainer dimulai sebelum pemeriksaan pertama dilakukan. Nilai default adalah 5 detik.
-
Period (s): Parameter periodSeconds menentukan interval antar pemeriksaan. Nilai default adalah 10 detik dengan minimum 1 detik.
-
Timeout (s): Parameter timeoutSeconds menentukan durasi timeout untuk setiap pemeriksaan. Nilai default adalah 1 detik dengan minimum 1 detik.
-
Healthy Threshold: Jumlah minimum pemeriksaan sukses berturut-turut yang diperlukan setelah kegagalan untuk menandai kontainer sebagai sehat. Nilai default adalah 1 dengan minimum 1. Untuk pemeriksaan kelangsungan hidup, nilai ini harus 1.
-
Unhealthy Threshold: Jumlah minimum pemeriksaan gagal berturut-turut yang diperlukan setelah keberhasilan untuk menandai kontainer sebagai tidak sehat. Nilai default adalah 3 dengan minimum 1.
-
-
(Opsional) Di bagian Lifecycle, konfigurasikan siklus hidup kontainer.
Anda dapat mengonfigurasi perintah pra-mulai, penanganan pasca-mulai, dan penanganan pra-berhenti untuk siklus hidup kontainer. Untuk detailnya, lihat Configure lifecycle.
Parameter
Description
Start
Tentukan perintah beserta argumennya yang akan dijalankan sebelum kontainer dimulai.
Post-start Hook
Tentukan perintah yang akan dijalankan setelah kontainer dimulai.
Pre-stop Hook
Tentukan perintah yang akan dijalankan sebelum kontainer dihentikan.
-
(Opsional) Di bagian Volume, pasang volume ke kontainer.
-
Penyimpanan lokal: Pasang ConfigMap, Secret, atau direktori sementara ke jalur kontainer. Untuk informasi lebih lanjut, lihat volumes.
-
Penyimpanan cloud: Mendukung disk cloud, NAS, dan lainnya. Untuk detailnya, lihat Storage overview.
-
-
(Opsional) Di bagian Log, konfigurasikan Collection Configuration dan Custom Tag.
Parameter
Description
Collection Settings
-
Logstore: Membuat Logstore yang sesuai di Simple Log Service untuk menyimpan log yang dikumpulkan.
-
Log Path in Container (Can be set to stdout): Mendukung stdout dan log teks.
-
Stdout: Mengumpulkan log output standar dari kontainer.
-
Log teks: Mengumpulkan log dari jalur tertentu di dalam kontainer. Contohnya, semua log teks di bawah
/var/log/nginxakan dikumpulkan dan mendukung karakter wildcard.
-
Custom Tags
Anda juga dapat mengatur tag kustom. Saat dikonfigurasi, tag tersebut disertakan bersama log kontainer dan membantu mengkategorikan log untuk mempermudah statistik serta penyaringan selama analisis.
-
-
Klik Next untuk menuju wizard Advanced.
Langkah 3: Selesaikan konfigurasi lanjutan
Di halaman wizard Advanced, konfigurasikan kontrol akses, penskalaan, penjadwalan, serta label/anotasi.
-
Di bagian Access Control, konfigurasikan cara mengekspos Pod backend.
Contoh ini menggunakan ClusterIP dan Ingress untuk membuat aplikasi Nginx yang dapat diakses publik.
-
Konfigurasikan Service: Klik Create di sebelah Services untuk mengatur parameter layanan.
-
Konfigurasikan Ingress: Klik Create di sebelah Ingresses untuk mengatur aturan routing untuk Pod backend.
-
-
(Opsional) Di bagian Scaling, aktifkan HPA untuk memenuhi permintaan beban yang bervariasi.
-
Container Compute Service mendukung penskalaan otomatis berdasarkan penggunaan CPU dan memori Pod.
CatatanUntuk mengaktifkan penskalaan otomatis, Anda harus menentukan sumber daya yang diminta untuk kontainer. Jika tidak, penskalaan otomatis tidak akan berfungsi.
configuration item
Description
Metric
Mendukung CPU dan memori. Harus sesuai dengan jenis sumber daya yang diminta.
Trigger Condition
Ambang batas persentase penggunaan sumber daya. Saat ambang ini terlampaui, sistem akan melakukan skala keluar.
Max. Replicas
Jumlah maksimum replika kontainer yang dapat diskalakan untuk tipe beban kerja ini.
Min. Replicas
Batas bawah jumlah replika untuk penskalaan beban kerja ini.
-
Container Compute Service juga mendukung penjadwalan penskalaan (CronHPA) untuk secara otomatis menskalakan kluster Kubernetes pada waktu tertentu. Sebelum mengaktifkan penjadwalan penskalaan, instal komponen ack-kubernetes-cronhpa-controller. Untuk detailnya, lihat Scheduled scaling (CronHPA).
-
-
(Opsional) Di bagian Labels,Annotations, klik Add untuk mengatur label dan anotasi Pod.
-
Klik Create.
Langkah 4: Lihat informasi aplikasi
Setelah berhasil dibuat, Anda akan dialihkan ke halaman penyelesaian. Klik View Details untuk menuju halaman detail Deployment.
Anda juga dapat melihat informasi Deployment di halaman Deployments. Klik nama Deployment target atau kolom Actions lalu klik Details untuk menuju halaman detail aplikasi.
Buat menggunakan YAML
Dalam orkestrasi templat ACS, Anda mendefinisikan objek sumber daya yang diperlukan untuk aplikasi Anda dan menggabungkannya menjadi aplikasi lengkap menggunakan mekanisme seperti pemilih label.
Contoh ini menunjukkan cara membuat aplikasi Nginx menggunakan templat orkestrasi yang berisi Deployment dan Service. Deployment membuat sumber daya Pod, dan Service mengikat Pod tersebut, membentuk aplikasi Nginx lengkap.
-
Masuk ke Konsol ACS. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster target. Di panel navigasi kiri, pilih Workloads > Deployments.
-
Di halaman Deployments, klik Create from YAML di pojok kanan atas.
-
Di halaman Create, konfigurasikan templat dan klik Create.
-
Sample Template: ACS menyediakan contoh YAML Kubernetes untuk berbagai tipe sumber daya untuk membantu Anda melakukan deployment dengan cepat. Anda juga dapat menulis YAML sendiri mengikuti standar Kubernetes.
-
Create Workload: Definisikan templat YAML dengan cepat menggunakan fitur ini.
-
Use Existing Template: Impor templat orkestrasi yang sudah ada.
-
Save Template: Simpan templat orkestrasi yang telah Anda konfigurasi.
Berikut adalah contoh YAML untuk aplikasi Nginx. Contoh ini dengan cepat membuat Deployment Nginx dan layanan LoadBalancer tipe CLB.
Catatan-
ACS mendukung orkestrasi YAML Kubernetes. Gunakan pemisah
---untuk mendefinisikan beberapa objek sumber daya dalam satu templat. -
(Opsional) Saat memasang volume melalui Volume, file dalam direktori mount akan ditimpa secara default. Untuk mempertahankan file yang ada, konfigurasikan parameter
subPath.
-
-
Setelah mengklik Create, pesan status deployment akan muncul.
kubectl
Anda dapat menggunakan perintah kubectl untuk membuat dan melihat aplikasi.
-
Sambungkan ke kluster Anda. Untuk detailnya, lihat Obtain cluster kubeconfig and connect using kubectl atau Manage Kubernetes clusters using kubectl in CloudShell.
-
Anda dapat menjalankan perintah berikut untuk memulai kontainer (seperti server web Nginx).
kubectl create deployment nginx --image=registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest -
Anda dapat menjalankan perintah berikut untuk membuat titik akhir layanan untuk kontainer. Menentukan
--type=LoadBalancermembuat SLB Alibaba Cloud yang mengarahkan trafik ke kontainer Nginx.kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer -
Anda dapat menjalankan perintah berikut untuk mencantumkan kontainer nginx yang sedang berjalan.
kubectl get pod |grep nginxOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE nginx-2721357637-d**** 1/1 Running 1 9h