execute pods no ECI em um cluster gerenciado do ACK para lidar com picos de tráfego sem gerenciar instâncias ECS.
Notas de uso
Se você usar o kube-scheduler v6.11.0 ou posterior e crie mais de 1.000 pods ACS ou ECI simultaneamente ao adicionar rótulos, atualize para a versão mais recente e ative o feature gate SchedulerBatchMoveEvents=true.
Casos de uso
Pods do 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 com mais rapidez, 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
Não é necessário manter nós dedicados. Pague apenas pelos recursos de computação usados durante o execute, reduzindo custos de workloads como tarefas do Spark e de IA.
Pré-requisitos
O cluster do ACK deve execute o Kubernetes 1.16 ou posterior em uma região com suporte ao ECI.
Verifique as regiões com suporte em Regions and zones supported by ECI e, em seguida, faça logon no Elastic Container Instance console para ativar o ECI.
Procedimento
Etapa 1: Implantar o componente ack-virtual-node
As etapas a seguir usam um cluster gerenciado do ACK como exemplo. Para um cluster dedicado do ACK, instale o ack-virtual-node a partir da página Marketplace. Consulte Deploy the ack-virtual-node component.
Faça logon no ACK console. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique em nome do seu cluster. No painel de navegação à esquerda, clique em Components and Add-ons .
-
Na página Add-ons, clique em guia Core Components, localize ACK Virtual Node e clique em Install. Siga as instruções na tela para concluir o instale.
Durante o instale, o sistema usa o vSwitch e o grupo de segurança padrão do cluster como os parâmetros iniciais de configuração do ECI. Para modifique esses parâmetros, atualize-os configurando um eci-profile.
Etapa 2: Agendar um pod para o ECI
Estes exemplos agendam um pod para o ECI ao rotular o pod ou o namespace. Consulte Schedule a Pod to a virtual node 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 do 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-specsespecifique a configuração de computação do pod do ECI. Consulte Specify the compute specification of an ECI pod.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 do ECI.
kubectl get pod <pod-name> -o yamlVerifique a anotação
k8s.aliyun.com/eci-instance-idpara obter o ID da instância do ECI e a anotaçãok8s.aliyun.com/eci-instance-specpara especifique a computação usada no faturamento.
Namespace
Para execute um conjunto 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 do 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-specsespecifique a configuração de computação do pod do ECI. Consulte Specify the compute specification of an ECI pod.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 do ECI.
kubectl get pod <pod-name> -o yaml -n vkVerifique a anotação
k8s.aliyun.com/eci-instance-idpara obter o ID da instância do ECI e a anotaçãok8s.aliyun.com/eci-instance-specpara especifique a computação usada no faturamento.