Execute pods no ECI em um cluster gerenciado ACK para lidar com picos de tráfego sem gerenciar instâncias ECS.
Observações de uso
Se você utiliza o kube-scheduler v6.11.0 ou posterior e cria mais de 1.000 pods ACS ou ECI simultaneamente via rótulos, atualize para a versão mais recente e ative o feature gate SchedulerBatchMoveEvents=true.
Casos de uso
Pods ECI lidam com picos de tráfego e reduzem custos de computação:
-
Serviços online com padrões de tráfego flutuantes
Responda a picos de tráfego rapidamente, reduza a manutenção do pool de recursos e diminua os custos de computação.
-
Tarefas de computação em lote ou de curta duração
Elimine a manutenção de nós dedicados. Pague apenas pelos recursos de computação usados durante a execução e reduza custos em cargas de trabalho como Spark e tarefas de IA.
Pré-requisitos
O cluster ACK deve executar o Kubernetes 1.16 ou posterior em uma região compatível com o ECI.
Verifique as regiões compatíveis em Regiões e zonas compatíveis com o ECI e faça logon no console do Elastic Container Instance para ativar o ECI.
Procedimento
Etapa 1: Implante o componente ack-virtual-node
As etapas a seguir usam um cluster gerenciado ACK como exemplo. Para um cluster dedicado ACK, implante o ack-virtual-node na página Marketplace. Consulte Implantar o componente ack-virtual-node.
Faça logon no console ACK. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Components and Add-ons.
-
Na página Add-ons, clique na aba Core Components, localize ACK Virtual Node e clique em Instale. Siga as instruções na tela para concluir a instalação.
A instalação usa o vSwitch e o grupo de segurança padrão do cluster como parâmetros iniciais de configuração do ECI. Para modificar esses parâmetros, atualize-os ao configurar um eci-profile.
Etapa 2: Agende um pod para o ECI
Estes exemplos agendam um pod para o ECI mediante a aplicação de rótulos no pod ou no namespace. Consulte Agendar um Pod para um nó virtual para conhecer outros métodos.
Pod
Adicione o rótulo alibabacloud.com/eci: "true" a um pod para agendá-lo em um nó virtual de arquitetura x86 como um pod ECI.
-
Crie um Deployment a partir do seguinte arquivo YAML.
kubectl create -f eci-pod.yamlExemplo de
eci-pod.yaml:NotaA anotação
k8s.aliyun.com/eci-use-specsdefine a especificação de computação do pod ECI. Consulte Especificar a especificação de computação de um pod ECI.apiVersion: apps/v1 kind: Deployment metadata: name: test labels: app: test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: test labels: app: nginx alibabacloud.com/eci: "true" # Add this label to schedule the Pod to ECI. annotations: k8s.aliyun.com/eci-use-specs: "2-4Gi" # Specify 2 vCPUs and 4 GiB of memory for the ECI pod. spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 -
Verifique se o Pod está em execução em um nó virtual.
kubectl get pod -o wide -l app=nginxSaída esperada. A coluna
NODEindica o nó virtual.NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-86f7fbc94f-g5m22 1/1 Running 0 38s 10.16.XX.XX virtual-kubelet-cn-hangzhou-j <none> <none> test-86f7fbc94f-r4wcn 1/1 Running 0 38s 10.16.XX.XX virtual-kubelet-cn-hangzhou-j <none> <none> -
Visualize os detalhes do pod ECI.
kubectl get pod <pod-name> -o yamlConsulte a anotação
k8s.aliyun.com/eci-instance-idpara obter o ID da instância ECI e a anotaçãok8s.aliyun.com/eci-instance-specpara verificar a especificação de computação usada no faturamento.
Namespace
Para executar uma categoria de pods no ECI, crie um namespace e adicione o rótulo alibabacloud.com/eci: "true". O sistema agenda todos os pods desse namespace em um nó virtual de arquitetura x86 como pods ECI.
-
Crie um Namespace chamado
vke adicione o rótulo necessário.kubectl create ns vk kubectl label namespace vk alibabacloud.com/eci=true -
Crie um Deployment no namespace
vk.kubectl create -f eci-namespace.yamlExemplo de
eci-namespace.yaml:NotaA anotação
k8s.aliyun.com/eci-use-specsdefine a especificação de computação do pod ECI. Consulte Especificar a especificação de computação de um pod ECI.apiVersion: apps/v1 kind: Deployment metadata: name: test namespace: vk # Specify the labeled Namespace to schedule Pods to ECI. labels: app: test spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: name: test labels: app: nginx annotations: k8s.aliyun.com/eci-use-specs: "2-4Gi" # Specify 2 vCPUs and 4 GiB of memory for the ECI pod. spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 -
Verifique se o Pod está em execução em um nó virtual.
kubectl get pod -o wide -l app=nginx -n vkSaída esperada. A coluna
NODEindica o nó virtual.NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES test-8f54bcfb5-86pvc 1/1 Running 0 14s 10.16.XX.XX virtual-kubelet-cn-hangzhou-j <none> <none> test-8f54bcfb5-skvkg 1/1 Running 0 14s 10.16.XX.XX virtual-kubelet-cn-hangzhou-j <none> <none> -
Visualize os detalhes do pod ECI.
kubectl get pod <pod-name> -o yaml -n vkConsulte a anotação
k8s.aliyun.com/eci-instance-idpara obter o ID da instância ECI e a anotaçãok8s.aliyun.com/eci-instance-specpara verificar a especificação de computação usada no faturamento.