O Alibaba Cloud Container Service for Kubernetes oferece diversas soluções serverless para containers baseadas em nós virtuais e Elastic Container Instance (ECI). A implantação do componente de nó virtual do Container Service for Kubernetes (ACK) integra o Kubernetes ao ECI de forma transparente. Isso permite criar pods ECI sob demanda com flexibilidade e dinamismo, eliminando a necessidade de planejar a capacidade do cluster.
Pré-requisitos
Instância do ASM v1.7.5.41 ou posterior criada. Para mais informações, consulte Create an ASM instance.
Componente ack-virtual-node implantado no cluster ACK e funcionando corretamente. Para mais detalhes, consulte Step 1: Deploy the ack-virtual-node component.
The kubeconfig file of the cluster is obtained, and kubectl is used to connect to the cluster.
Etapa 1: Ative a injeção automática de sidecar no namespace de destino
Ao ativar a injeção automática de sidecar para um namespace no console do ASM, o sistema injeta automaticamente um proxy Envoy como sidecar em cada pod criado nesse namespace. Esses proxies Envoy compõem o plano de dados da instância do ASM.
Neste exemplo, a injeção automática de sidecar está ativada para os namespaces default e vk. O Método 1 utiliza o namespace default, enquanto o Método 2 usa o namespace vk. Para mais informações, consulte Manage global namespaces.
Etapa 2: Crie uma aplicação de pod ECI
Após criar uma aplicação de pod ECI, o ASM gerencia a aplicação no plano de dados por meio do sidecar injetado.
Os dois métodos abaixo são alternativas. Escolha um deles com base no escopo de aplicação do rótulo alibabacloud.com/eci=true:
Método 1: rótulo de pod — Especifique o rótulo durante a criação do pod. Ele se aplica apenas a esse pod específico.
Método 2: rótulo de namespace — Adicione o rótulo ao namespace antes de criar o pod. Dessa forma, ele vale para todos os pods criados nesse namespace.
Método 1: Crie uma aplicação de pod ECI configurando rótulos de pod
Especifique o rótulo alibabacloud.com/eci=true ao criar o pod. Assim, o pod executa como uma instância ECI em um nó virtual.
-
Execute o comando abaixo para verificar se o namespace
defaultcontém o rótuloistio-injection=enabled:kubectl get ns default --show-labelsSaída esperada:
NAME STATUS AGE LABELS default Active 16d istio-injection=enabled,kubernetes.io/metadata.name=default,provider=asm -
Execute o seguinte comando para implantar uma aplicação Nginx:
kubectl run nginx -n default --image nginx -l alibabacloud.com/eci=trueSaída esperada:
pod/nginx created -
Visualize as informações do pod no nó virtual executando este comando:
kubectl get pod -n default -o wide|grep virtual-kubeletSaída esperada:
nginx 2/2 Running 0 8m49s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>
A contagem de prontos 2/2 na saída indica que o sidecar injetado executa junto ao container da aplicação. O ASM gerencia o pod no plano de dados.
Método 2: Crie uma aplicação de pod ECI configurando rótulos de namespace
Adicione o rótulo alibabacloud.com/eci=true ao namespace antes de criar o pod. Os pods criados posteriormente nesse namespace executam como instâncias ECI em um nó virtual.
-
Verifique se o namespace
vkpossui o rótuloistio-injection=enabledcom o comando a seguir:kubectl get ns vk --show-labelsSaída esperada:
NAME STATUS AGE LABELS vk Active 96m istio-injection=enabled,kubernetes.io/metadata.name=vk,provider=asm -
Adicione o rótulo ao namespace
vkexecutando o comando abaixo:kubectl label namespace vk alibabacloud.com/eci=trueSaída esperada:
namespace/vk labeled -
Implante uma aplicação Nginx utilizando o seguinte comando:
kubectl -n vk run nginx --image nginxSaída esperada:
pod/nginx created -
Para visualizar as informações do pod no nó virtual, execute:
kubectl -n vk get pod -o wide|grep virtual-kubeletSaída esperada:
nginx 2/2 Running 0 38s 192.168.XXX.XXX virtual-kubelet-cn-beijing-i <none> <none>
O valor 2/2 na coluna de prontos confirma que o pod executa com o sidecar injetado. Por meio desse sidecar, o ASM gerencia o pod no plano de dados.