Container Service for Kubernetes (ACK) menyediakan berbagai kontainer serverless berbasis node virtual dan Elastic Container Instance (ECI). Sebagai contoh, node virtual dapat diterapkan di klaster ACK untuk memungkinkan integrasi tanpa hambatan antara Kubernetes dan ECI. Anda dapat membuat pod berbasis ECI sesuai kebutuhan untuk menghindari perencanaan kapasitas klaster. Topik ini menjelaskan cara menggunakan Service Mesh (ASM) untuk mengelola aplikasi dalam pod berbasis ECI yang berjalan pada node virtual klaster ACK.
Prasyarat
Sebuah instance ASM dengan versi 1.7.5.41 atau lebih baru telah dibuat. Untuk informasi lebih lanjut, lihat Buat Instance ASM.
Komponen ack-virtual-node telah diterapkan dan berjalan dengan baik di klaster ACK Anda. Untuk informasi lebih lanjut, lihat Langkah 1: Terapkan ack-virtual-node di Klaster ACK.
File kubeconfig klaster telah diperoleh dan digunakan untuk terhubung ke klaster melalui kubectl.
Langkah 1: Aktifkan injeksi proxy sidecar otomatis untuk sebuah namespace
Setelah Anda mengaktifkan injeksi sidecar otomatis untuk sebuah namespace di konsol ASM, proxy Envoy secara otomatis disuntikkan sebagai sidecar ke setiap pod yang dibuat di namespace tersebut. Proxy Envoy ini membentuk bidang data dari instance ASM.
Dalam contoh ini, injeksi proxy sidecar otomatis diaktifkan untuk namespace default dan vk. Untuk informasi lebih lanjut, lihat Kelola Namespace Global.
Langkah 2: Buat pod berbasis ECI untuk sebuah aplikasi
Setelah aplikasi diterapkan di pod yang berjalan pada instance kontainer elastis, ASM dapat mengelola aplikasi pada bidang data menggunakan sidecar.
Metode 1: Gunakan label pod untuk membuat pod berbasis ECI
Tambahkan label alibabacloud.com/eci=true ke pod aplikasi yang ingin Anda buat. Dengan cara ini, pod akan dijadwalkan ke instance kontainer elastis yang berfungsi sebagai node virtual.
Jalankan perintah berikut untuk memeriksa apakah label
istio-injection=enabledtelah ditambahkan ke namespace default:kubectl get ns default --show-labelsOutput yang Diharapkan:
NAME STATUS AGE LABELS default Active 16d istio-injection=enabled,kubernetes.io/metadata.name=default,provider=asmJalankan perintah berikut untuk menerapkan aplikasi NGINX:
kubectl run nginx -n default --image nginx -l alibabacloud.com/eci=trueOutput yang Diharapkan:
pod/nginx createdJalankan perintah berikut untuk melihat informasi tentang pod yang berjalan pada node virtual:
kubectl get pod -n default -o wide|grep virtual-kubeletOutput yang Diharapkan:
nginx 2/2 Running 0 8m49s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>
Metode 2: Use a namespace label to create ECI-based pods
Tambahkan label alibabacloud.com/eci=true ke namespace tempat pod aplikasi yang ingin Anda buat berada. Dengan cara ini, pod akan dijadwalkan ke instance kontainer elastis yang berfungsi sebagai node virtual.
Jalankan perintah berikut untuk memeriksa apakah label
istio-injection=enabledtelah ditambahkan ke namespace vk:kubectl get ns vk --show-labelsOutput yang Diharapkan:
NAME STATUS AGE LABELS vk Active 96m istio-injection=enabled,kubernetes.io/metadata.name=vk,provider=asmJalankan perintah berikut untuk menambahkan label ke namespace vk:
kubectl label namespace vk alibabacloud.com/eci=trueOutput yang Diharapkan:
namespace/vk labeledJalankan perintah berikut untuk menerapkan aplikasi NGINX:
kubectl -n vk run nginx --image nginxOutput yang Diharapkan:
pod/nginx createdJalankan perintah berikut untuk melihat informasi tentang pod yang berjalan pada node virtual:
kubectl -n vk get pod -o wide|grep virtual-kubeletOutput yang Diharapkan:
nginx 2/2 Running 0 38s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>