Para estender o gerenciamento de tráfego do Alibaba Cloud Service Mesh (ASM) a cargas de trabalho serverless, implante aplicações em pods do Elastic Container Instance (ECI) nos nós virtuais do seu cluster ACK. Essa abordagem permite executar cargas de trabalho gerenciadas pelo Envoy sem provisionar capacidade de nós antecipadamente, unindo a observabilidade do ASM à elasticidade do ECI.
Este tópico demonstra como ativar a injeção de sidecar para um namespace e agendar pods em nós virtuais do ECI por dois métodos: rótulo no nível do pod ou rótulo no nível do namespace.
Pré-requisitos
Antes de começar, verifique se você possui:
Uma instância do ASM na versão 1.7.5.41 ou posterior. Para mais informações, consulte Crie uma instância do ASM.
O componente
ack-virtual-nodeimplantado e em execução no seu cluster ACK. Para mais informações, consulte Etapa 1: Implantar ack-virtual-node em clusters ACK.O arquivo kubeconfig do cluster obtido e configurado para acesso via kubectl.
Etapa 1: Ative a injeção automática de proxy sidecar para um namespace
Ative a injeção automática de proxy sidecar para o namespace desejado no console do ASM. Após configurar o namespace, o sistema injeta automaticamente um proxy Envoy como sidecar em cada pod criado nesse namespace. Esses proxies Envoy formam o plano de dados da instância do ASM.
Neste exemplo, a injeção automática de proxy sidecar está ativada para os namespaces default e vk. Para mais informações, consulte Gerencie namespaces globais.
Etapa 2: Crie pods baseados em ECI
Após a implantação de um pod em uma instância do ECI, o ASM gerencia a aplicação por meio do sidecar Envoy no plano de dados.
Para agendar um pod em um nó virtual do ECI, adicione o rótulo alibabacloud.com/eci=true ao pod ou ao seu namespace. Escolha o método conforme o escopo de agendamento desejado:
|
Método |
Destino do rótulo |
Escopo |
Quando usar |
|
Rótulo de pod |
Pod individual |
Apenas o pod rotulado é agendado no ECI |
Agende pods específicos no ECI mantendo os demais em nós regulares |
|
Rótulo de namespace |
Namespace |
Todos os pods criados no namespace são agendados no ECI |
Dedique um namespace inteiro a cargas de trabalho do ECI |
Método 1: Usar um rótulo de pod
Adicione o rótulo alibabacloud.com/eci=true diretamente a um pod para agendá-lo em um nó virtual do ECI. Somente o pod rotulado é afetado; os outros pods no mesmo namespace continuam em execução em nós regulares.
-
Verifique se o rótulo
istio-injection=enabledestá presente no namespacedefault: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 -
Implante a aplicação NGINX com o rótulo do ECI:
kubectl run nginx -n default --image nginx -l alibabacloud.com/eci=trueSaída esperada:
pod/nginx created -
Confirme que o pod está em execução no nó virtual:
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>Na saída:
2/2indica que tanto o contêiner da aplicação quanto o sidecar Envoy injetado estão em execução. A injeção do sidecar foi bem-sucedida.virtual-kubelet-cn-beijing-ié o nome do nó virtual, confirmando que o pod está em execução em uma instância do ECI.
Método 2: Usar um rótulo de namespace
Adicione o rótulo alibabacloud.com/eci=true a um namespace para que todos os pods criados nele sejam agendados em nós virtuais do ECI.
-
Verifique se o rótulo
istio-injection=enabledestá presente no namespacevk: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 do ECI ao namespace
vk:kubectl label namespace vk alibabacloud.com/eci=trueSaída esperada:
namespace/vk labeled -
Implante a aplicação NGINX:
kubectl -n vk run nginx --image nginxSaída esperada:
pod/nginx created -
Confirme que o pod está em execução no nó virtual:
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>Na saída:
2/2indica que tanto o contêiner da aplicação quanto o sidecar Envoy injetado estão em execução. A injeção do sidecar foi bem-sucedida.virtual-kubelet-cn-beijing-ié o nome do nó virtual, confirmando que o pod está em execução em uma instância do ECI.