Alibaba Cloud Container Service, sanal düğümler ve Elastic Container Instance (ECI) tabanlı birden çok sunucusuz konteyner hizmeti sunar. Örneğin, Container Service for Kubernetes (ACK) sanal düğüm bileşeninin dağıtılması Kubernetes ile ECI arasında sorunsuz bir bağlantı kurar. Bu sayede küme kapasitesi planlaması yapmadan ihtiyaç duyduğunuzda esnek ve dinamik bir şekilde ECI pod'ları oluşturabilirsiniz.
Ön Koşullar
v1.7.5.41 veya sonraki bir sürüme sahip bir ASM örneği oluşturun. Daha fazla bilgi için bkz. ASM örneği oluşturma.
ack-virtual-node bileşenini ACK kümesine dağıtın ve bileşenin beklendiği gibi çalıştığından emin olun. Daha fazla bilgi için bkz. Adım 1: ack-virtual-node bileşenini dağıtma.
Kümenin kubeconfig dosyasını alın ve kubectl kullanarak kümeye bağlanın.
Adım 1: Hedef ad alanı için otomatik sidecar enjeksiyonunu etkinleştirin
ASM konsolunda bir ad alanı için otomatik sidecar enjeksiyonunu etkinleştirdiğinizde bu ad alanında oluşturulan her pod'a Envoy proxy'si otomatik olarak bir sidecar olarak enjekte edilir. Bu Envoy proxy'leri ASM örneğinin veri düzlemini oluşturur.
Bu örnekte default ve vk ad alanları için otomatik sidecar enjeksiyonu etkinleştirilmiştir. Yöntem 1'de default ad alanı, Yöntem 2'de ise vk ad alanı kullanılır. Daha fazla bilgi için bkz. Global ad alanlarını yönetme.
Adım 2: Bir ECI pod uygulaması oluşturun
Bir ECI pod uygulaması oluşturduktan sonra ASM enjekte edilen sidecar aracılığıyla uygulamayı veri düzleminde yönetebilir.
Aşağıdaki iki yöntem alternatiflidir. alibabacloud.com/eci=true etiketinin uygulanacağı kapsama göre birini seçin:
Yöntem 1: Pod etiketi — Pod'u oluştururken etiketi belirtirsiniz ve etiket yalnızca o pod'a uygulanır.
Yöntem 2: Ad alanı etiketi — Pod'u oluşturmadan önce etiketi ad alanına eklersiniz ve etiket o ad alanında oluşturduğunuz pod'lara uygulanır.
Yöntem 1: Pod etiketlerini yapılandırarak bir ECI pod uygulaması oluşturun
Pod'u oluştururken alibabacloud.com/eci=true etiketini belirtin. Bu sayede pod sanal bir düğüm üzerinde bir ECI örneği olarak çalışır.
-
defaultad alanınınistio-injection=enabledetiketini içerdiğini doğrulamak için aşağıdaki komutu çalıştırın:kubectl get ns default --show-labelsBeklenen çıktı:
NAME STATUS AGE LABELS default Active 16d istio-injection=enabled,kubernetes.io/metadata.name=default,provider=asm -
Bir Nginx uygulaması dağıtmak için aşağıdaki komutu çalıştırın:
kubectl run nginx -n default --image nginx -l alibabacloud.com/eci=trueBeklenen çıktı:
pod/nginx created -
Sanal düğümdeki pod bilgilerini görüntülemek için aşağıdaki komutu çalıştırın:
kubectl get pod -n default -o wide|grep virtual-kubeletBeklenen çıktı:
nginx 2/2 Running 0 8m49s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>
Çıktıda yer alan 2/2 hazır sayısı enjekte edilen sidecar'ın uygulama konteyneriyle birlikte çalıştığını gösterir. ASM pod'u veri düzleminde yönetir.
Yöntem 2: Ad alanı etiketlerini yapılandırarak bir ECI pod uygulaması oluşturun
Pod'u oluşturmadan önce alibabacloud.com/eci=true etiketini ad alanına ekleyin. Ardından bu ad alanında oluşturduğunuz pod'lar sanal bir düğüm üzerinde ECI örnekleri olarak çalışır.
-
vkad alanınınistio-injection=enabledetiketini içerdiğini doğrulamak için aşağıdaki komutu çalıştırın:kubectl get ns vk --show-labelsBeklenen çıktı:
NAME STATUS AGE LABELS vk Active 96m istio-injection=enabled,kubernetes.io/metadata.name=vk,provider=asm -
Etiketi
vkad alanına eklemek için aşağıdaki komutu çalıştırın:kubectl label namespace vk alibabacloud.com/eci=trueBeklenen çıktı:
namespace/vk labeled -
Bir Nginx uygulaması dağıtmak için aşağıdaki komutu çalıştırın:
kubectl -n vk run nginx --image nginxBeklenen çıktı:
pod/nginx created -
Sanal düğümdeki pod bilgilerini görüntülemek için aşağıdaki komutu çalıştırın:
kubectl -n vk get pod -o wide|grep virtual-kubeletBeklenen çıktı:
nginx 2/2 Running 0 38s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>
Çıktıda yer alan 2/2 hazır sayısı pod'un enjekte edilen sidecar ile birlikte çalıştığını gösterir. ASM bu sidecar aracılığıyla pod'u veri düzleminde yönetir.