O Alibaba Cloud Container Service for Kubernetes (ACK) oferece diversos contêineres serverless baseados em nós virtuais e instâncias de contêiner elásticas. Os clusters ACK Serverless integram perfeitamente o Kubernetes à Elastic Container Instance (ECI). Integre um cluster ACK Serverless ao Service Mesh (ASM) para gerenciar aplicações implantadas em pods executados na ECI.
Ao concluir este guia, você terá:
Ativado a injeção automática de proxy sidecar em um namespace
Implantado uma aplicação de exemplo com um sidecar Envoy
Verificado que o ASM gerencia a aplicação pelo plano de dados
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster ACK Serverless com o modo de descoberta de serviços definido como PrivateZone ou CoreDNS. Sem PrivateZone ou CoreDNS, os sidecars não conseguem resolver o serviço do plano de controle
istiod.istio-system. Para mais informações, consulte Início rápido do ACK ServerlessO cluster ACK Serverless adicionado à sua instância do ASM. Para mais informações, consulte Adicionar um cluster a uma instância do ASM
Defina o modo de descoberta de serviços durante a criação do cluster ACK Serverless. Consulte as Perguntas frequentes caso enfrente problemas de resolução de DNS.
Etapa 1: Ativar a injeção automática de proxy sidecar
Ative a injeção automática de proxy sidecar para um namespace no console do ASM. Após a ativação, o ASM insere automaticamente um proxy Envoy como sidecar em cada novo pod criado nesse namespace. Esses proxies Envoy formam o plano de dados da sua instância do ASM.
O exemplo a seguir usa o namespace default. Para obter instruções sobre como ativar a injeção em outros namespaces, consulte Gerenciar namespaces globais.
A ativação da injeção de sidecar afeta apenas novos pods. Para adicionar aplicações existentes à malha, reinicie os deployments após ativar a injeção:
kubectl rollout restart deployment <deployment-name> -n <namespace>
Etapa 2: Implantar uma aplicação e verificar a injeção de sidecar
Em clusters ACK Serverless, todos os pods são executados na ECI por meio de nós virtuais. Não é necessário usar rótulos para indicar que a aplicação está implantada em um pod baseado em ECI.
-
Implante a aplicação NGINX:
kubectl run nginx -n default --image nginx -
Verifique se o pod executa em um nó virtual e se o sidecar foi injetado:
kubectl get pod -n default -o wide | grep virtual-kubeletSaída esperada:
nginx-xxx 2/2 Running 0 30s x.x.x.x virtual-kubelet <none> <none>Campo
Valor esperado
Significado
READY
2/2Dois contêineres em execução: o contêiner da aplicação NGINX e o proxy sidecar Envoy
NODE
virtual-kubeletO pod executa em um nó virtual baseado em ECI
Se a coluna READY exibir
1/1, o sidecar não foi injetado. Retorne à Etapa 1 e verifique se a injeção está ativada para o namespace.
Após a injeção do sidecar, o ASM passa a gerenciar a aplicação pelo plano de dados.
Perguntas frequentes
Por que a descoberta de serviços falha no meu cluster ACK Serverless?
Verifique os logs do contêiner sidecar. Se istiod.istio-system resolver para um endereço IP inválido, o serviço Alibaba Cloud DNS PrivateZone não está ativado.
Para corrigir isso, execute uma das seguintes ações:
Ative o serviço Alibaba Cloud DNS PrivateZone
Instale o CoreDNS pela página de Add-ons no console do ACK