Todos os produtos
Search
Central de documentação

Elastic Container Instance:Deploy VNode in a self-managed Kubernetes cluster with VNodectl

Última atualização: Jun 28, 2026

O VNodectl é uma ferramenta de CLI para implantar e gerenciar VNodes em clusters Kubernetes autogerenciados. Após a implantação do VNode, os pods agendados nele são executados como elastic container instances baseadas no Elastic Container Instance, sem necessidade de alterações no cluster existente.

Limitações

  • VNodes não são nós reais. DaemonSets não podem ser executados em VNodes. Após criar um VNode, configure nodeAffinity no kube-proxy para impedir o agendamento de pods do DaemonSet nesse nó. Consulte Impedir o agendamento de DaemonSets no VNode.

  • O modo de autenticação ServiceAccount não oferece suporte à rotação de certificados. Se você utilizar esse modo, garanta que o token tenha validade suficientemente longa para evitar falhas no VNode.

Pré-requisitos

Antes de começar, verifique se você possui os seguintes itens:

  • Um cluster Kubernetes nas versões 1,16 a 1,30.

  • Se o cluster for executado em um data center: conectividade de rede entre o data center e a Virtual Private Cloud (VPC) onde os pods baseados no Elastic Container Instance serão executados. Opções suportadas: Express Connect, Smart Access Gateway (SAG) ou VPN Gateway.

  • Os seguintes IDs de recursos e credenciais:

    Recurso

    Como obter

    ID da região

    Verifique as regiões disponíveis em Regiões e zonas, consulte o console do Elastic Container Instance ou use a API DescribeRegions.

    ID da VPC

    Crie ou visualize VPCs na página VPCs do console da VPC.

    ID do vSwitch

    Crie ou visualize vSwitches na página vSwitch do console da VPC. Selecione um vSwitch na mesma VPC.

    ID do grupo de segurança

    Crie ou visualize grupos de segurança na página Security Groups do console do ECS. Selecione um grupo de segurança na mesma VPC.

    AccessKey ID e AccessKey secret

    Consulte Criar um par de AccessKey.

Utilize um grupo de segurança avançado e adicione as seguintes regras de entrada:
Todas as portas 1–65535 dos blocos CIDR da VPC
Portas 10250 e 10255 do endpoint do servidor de API do Kubernetes

As seguintes permissões são necessárias para criar um VNode:

Tipo

Permissão

Descrição

Padrão

system:node

Permissões padrão de nó

Padrão

system:node-proxier

Permissões padrão do kube-proxy

Padrão

system:certificates.k8s.io:certificatesigningrequests:nodeclient

Permite que os nós solicitem a criação de certificados

Padrão

system:certificates.k8s.io:certificatesigningrequests:selfnodeclient

Permite que os nós realizem a rotação de certificados

Adicional

pods update e pods patch

Atualiza anotações de pods, como k8s.aliyun.com/eci-instance-id

Adicional

pvc update e pvc patch

Atualiza anotações de PersistentVolumeClaim (PVC)

Instale o VNodectl

Instale o VNodectl no nó mestre do seu cluster Kubernetes.

Baixe o pacote correspondente ao seu sistema operacional e arquitetura de CPU:

Sistema operacional Arquitetura de CPU Download
macOS AMD64 macOS_AMD64
ARM64 macOS_ARM64
Linux AMD64 Linux_AMD64
ARM64 Linux_ARM64
Windows AMD64 Windows_AMD64
ARM64 Windows_ARM64

Os exemplos a seguir utilizam Linux AMD64:

  1. Conecte-se ao seu cluster Kubernetes.

  2. Baixe o pacote do VNodectl.

    wget https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnodectl_0.0.5-beta_linux_amd64.tar.gz -O vnodectl.tar.gz
  3. Extraia o pacote.

    tar xvf vnodectl.tar.gz
  4. Mova o binário para um diretório no seu PATH.

    cp vnodectl /usr/local/bin/vnode
Adicione --dry a qualquer comando vnode para executar uma validação no lado do cliente sem aplicar alterações. Se ocorrer um erro de compatibilidade de versão da API, adicione --kubernetes-version para especificar a versão do Kubernetes do seu cluster.

Configure o cluster

Antes de criar um VNode, gere um certificado kubeconfig para ele. O VNodectl suporta dois modos de autenticação:

Modo

Quando usar

TLS Bootstrap

Recomendado quando há requisitos de segurança. Implanta automaticamente o vnode-approver para aprovar solicitações de assinatura de certificado (CSRs) dos VNodes. Suporta rotação de certificados.

ServiceAccount

Não suporta rotação de certificados — certifique-se de que o token tenha validade permanente ou suficientemente longa.

TLS Bootstrap

  1. Prepare as seguintes informações do cluster:

    Parâmetro Descrição Como obter Exemplo
    kubeconfig Kubeconfig de administrador usado para conceder permissões de implantação Caminho padrão: ~/.kube/config /path/to/kubeconfig
    cluster-ca-path Autoridade certificadora (CA) usada para gerar o kubeconfig do VNode Execute ps aux | grep apiserver e obtenha o valor de --client-ca-file /path/to/ca.crt
    apiserver-address Endpoint do servidor de API para comunicação do cluster Obtenha no seu kubeconfig https://8.134.XX.XX:6443
    bootstrap-token-id Parte do token de bootstrap TLS Escolha uma string alfanumérica de 6 caracteres eci123
    bootstrap-token-secret Escolha uma string alfanumérica de 16 caracteres eci1233333333333
  2. Implante o vnode-approver para aprovar automaticamente as CSRs dos VNodes.

    vnode addon enable vnode-approver

    Para obter o código-fonte, consulte vnode-approver no GitHub.

  3. Execute o comando de configuração do cluster. Substitua os valores de espaço reservado pelas informações reais do seu cluster.

    vnode cluster setup \
      --kubeconfig /path/to/kubeconfig \
      --bootstrap \
      --bootstrap-token-id <token-id> \
      --bootstrap-token-secret <token-secret> \
      --apiserver-address https://8.134.XX.XX:6443 \
      --cluster-ca-path /path/to/ca.crt
  4. Valide a configuração.

    vnode cluster validate

    A saída esperada é:

    kubeconfig can't be empty

    Por padrão, o certificado kubeconfig é salvo em ~/.vnode/deploy/kubeconfig.

ServiceAccount

  1. Prepare as seguintes informações do cluster:

    Parâmetro

    Descrição

    Como obter

    Exemplo

    kubeconfig

    Kubeconfig de administrador usado para conceder permissões de implantação

    Caminho padrão: ~/.kube/config

    /path/to/kubeconfig

    cluster-ca-path

    CA usada para gerar o kubeconfig do VNode

    Execute `ps aux

    grep apiserver` e obtenha o valor de --client-ca-file

    /path/to/ca.crt

    apiserver-address

    Endpoint do servidor de API para comunicação do cluster

    Obtenha no seu kubeconfig

    https://8.134.XX.XX:6443

  2. Execute o comando de configuração do cluster. Substitua os valores de espaço reservado pelas informações reais do seu cluster.

    vnode cluster setup \
      --kubeconfig /path/to/kubeconfig \
      --apiserver-address https://8.134.XX.XX:6443 \
      --cluster-ca-path /path/to/ca.crt
  3. Valide a configuração.

    vnode cluster validate

    A saída esperada é:

    kubeconfig can't be empty

    Por padrão, o certificado kubeconfig é salvo em ~/.vnode/deploy/kubeconfig.

Configure o arquivo ~/.vnode/config

O arquivo ~/.vnode/config armazena a configuração lida pelo VNodectl durante a execução. Configure-o antes de criar um VNode.

  1. Gere o modelo de configuração padrão.

    Parâmetro Obrigatório Descrição
    name Sim Nome do contexto
    vnode-name Não Nome do VNode. Deixe em branco para permitir que o sistema gere um nome exclusivo.
    region-id Sim ID da região onde o VNode será executado. Consulte a seção de Pré-requisitos para detalhes.
    access-key-id Sim Seu AccessKey ID para autenticação na API. Consulte Criar um par de AccessKey.
    access-key-secret Sim
    vswitch-id Sim ID do vSwitch para o VNode. Especifique vários IDs para ativar a seleção automática de vSwitch.
    security-group-id Sim ID do grupo de segurança para o VNode.
    resource-group-id Não Grupo de recursos para o VNode. O padrão é o grupo de recursos padrão da conta. Consulte O que é o Resource Management?
    kubeconfig Sim Caminho para o kubeconfig gerado na etapa anterior. Padrão: ~/.vnode/deploy/kubeconfig
    taints Não Taints a serem vinculados ao VNode.
    tags Não Tags para divisão de faturamento. Após vincular uma tag personalizada, filtre as cobranças por tag na visualização de análise de taxas. Consulte Visualizar contas divididas com base em tags.
    network-type Não Tipo de rede para o serviço de controle do Elastic Container Instance. Deixe em branco para acesso via internet; defina como vpc para acesso via VPC.
    vnode config default

    A tabela a seguir descreve os parâmetros na seção contexts.

  2. Grave o modelo em ~/.vnode/config e edite-o.

    vnode config default > ~/.vnode/config
    vim ~/.vnode/config

    O exemplo abaixo mostra uma configuração mínima apenas com os parâmetros obrigatórios:

    kind: vnode
    contexts:
        - name: default
          region-id: cn-guangzhou
          access-key-id: <yourAccessKeyID>
          access-key-secret: <yourAccessKeySecret>
          vswitch-id: vsw-7xv2yk45qp5etidgf****
          security-group-id: sg-7xv5tcch4kjdr65t****
          kubeconfig: ~/.vnode/deploy/kubeconfig
    current-context: default
  3. Verifique se o VNodectl lê a configuração corretamente.

    vnode config
  4. Se houver múltiplos contextos, alterne para aquele que deseja utilizar.

    vnode config set-context <context-name>

Crie um VNode

  1. Crie o VNode.

    vnode create

    O VNode é criado com base no arquivo ~/.vnode/config. Para configurar customResources, clusterDNS ou clusterDomain, consulte Gerenciar VNodes. A saída esperada inclui o ID do VNode:

    {"RequestId":"AB772F9D-2FEF-5BFD-AAFB-DA3444851F29","VirtualNodeId":"vnd-7xvetkyase7gb62u****"}
  2. Verifique o status do VNode.

    vnode list

    Quando STATUS exibir Ready, o VNode estará em execução:

    VNODE ID                    VNODE NAME                                   CREATED          STATUS    SCHEDULABLE ZONES
    vnd-7xvetkyase7gb62u****    vnode-cn-guangzhou-a-7xvetkyase7gb62u****    2 minutes ago    Ready     cn-guangzhou-a
  3. Confirme se o VNode aparece no cluster.

    kubectl get node

    O VNode é listado como um nó agent:

    NAME                                    STATUS     ROLES                  AGE    VERSION
    cn-guangzhou.vnd-7xvetkyase7gb62u****   Ready      agent                  174m   v1.20.6
    vnode-test001                           Ready      control-plane,master   23h    v1.20.6
    vnode-test002                           Ready      <none>                 22h    v1.20.6

Impeça o agendamento de DaemonSets no VNode

Como VNodes não são nós reais, pods do DaemonSet não podem ser executados neles. Configure nodeAffinity no kube-proxy para excluir o VNode.

  1. Edite o DaemonSet do kube-proxy.

    kubectl -n kube-system edit ds kube-proxy
  2. Adicione o seguinte bloco nodeAffinity em spec.template.spec.

    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchExpressions:
            - key: type
              operator: NotIn
              values:
              - virtual-kubelet

Agende pods no VNode

Após a criação do VNode, agende pods nele utilizando um dos métodos abaixo:

  • Agendamento manual: Configure nodeSelector e tolerations, ou defina nodeName na especificação do pod. Consulte Agendar pods em um VNode.

  • Agendamento automático: Implante o componente eci-profile e especifique um Selector. O sistema agenda automaticamente os pods correspondentes no VNode. Consulte Usar eci-profile para agendar pods em um VNode.

Próximos passos