Todos os produtos
Search
Central de documentação

Elastic Container Instance:Adicionar um VNode (manual)

Última atualização: Jun 28, 2026

Se você tem um cluster Kubernetes autogerenciado em execução em um data center local (IDC) ou em instâncias ECS da Alibaba Cloud, implante um nó virtual (VNode) no cluster para usar o ECI. Este tópico descreve como configurar certificados e criar manualmente um VNode para seu cluster Kubernetes autogerenciado.

Pré-requisitos

  • Ter um cluster Kubernetes na versão 1,16 a 1,30.

  • Se o cluster Kubernetes estiver implantado em um data center local, garanta que a rede do data center esteja conectada à rede da Alibaba Cloud por meio do Express Connect, Smart Access Gateway (SAG) ou VPN Gateway. Para mais informações, consulte os seguintes tópicos:

Antes de começar

Antes de criar um VNode, reúna os parâmetros necessários e revise as permissões obrigatórias. A tabela a seguir descreve os parâmetros necessários.

Parâmetro

Descrição

Como obter

region

Uma região é um data center físico. Selecione uma região com base em fatores como sua localização, a localização dos usuários-alvo e os preços dos recursos. Para mais informações, consulte Regiões e zonas de disponibilidade.

O ECI e seus recursos associados são criados na região selecionada.

Encontre as regiões compatíveis com o ECI no console do Elastic Container Instance ou chame a operação DescribeRegions.

VPC

Uma VPC é uma rede privada personalizada criada na Alibaba Cloud. As VPCs são logicamente isoladas umas das outras. Para mais informações, consulte O que é uma VPC?.

O ECI e seus recursos associados são criados na VPC configurada.

Nota

Se o cluster Kubernetes estiver implantado em um data center local, certifique-se de que a rede do data center consiga alcançar esta VPC.

Crie e visualize VPCs na página VPC do console VPC.

vSwitch

Um vSwitch é um dispositivo de rede básico em uma VPC que conecta diferentes recursos de nuvem. Ao criar o ECI e seus recursos associados em uma VPC, especifique um ou mais vSwitches; o sistema selecionará um automaticamente.

Crie e visualize vSwitches na página vSwitch do console VPC. Selecione um vSwitch pertencente à VPC escolhida.

security group

Um grupo de segurança atua como firewall virtual que controla o tráfego de entrada e saída dos recursos no grupo, aumentando a segurança da rede. Para mais informações, consulte Visão geral de grupos de segurança.

O ECI e seus recursos associados são adicionados ao grupo de segurança.

Nota

Recomendamos usar um grupo de segurança empresarial com as seguintes regras de entrada:

  • Permitir acesso a todas as portas (1–65535) a partir do bloco CIDR da VPC.

  • Permitir acesso às portas de serviço do VNode (10250 e 10255) a partir do endereço do servidor de API do Kubernetes.

Crie e visualize grupos de segurança na página Security Group do console ECS. Escolha um grupo de segurança pertencente à VPC selecionada.

Ao criar um VNode, configure as permissões necessárias. Isso inclui as permissões padrão usadas por nós nativos do Kubernetes e permissões adicionais específicas para VNodes, conforme descrito na tabela a seguir.

Tipo

Permissão

Descrição

Permissões padrão

system:node

Permissões padrão de nó.

system:node-proxier

Permissões padrão do kube-proxy.

system:certificates.k8s.io:certificatesigningrequests:nodeclient

Permite que um nó crie solicitações de assinatura de certificado (CSRs).

system:certificates.k8s.io:certificatesigningrequests:selfnodeclient

Permite que um nó solicite novos certificados com base em um certificado existente. Isso possibilita a rotação de certificados.

Permissões adicionais

pods update e pods patch

Permite que o VNode atualize anotações de pods, por exemplo, para adicionar anotações computadas como k8s.aliyun.com/eci-instance-id aos pods.

pvc update e pvc patch

Permite que o VNode atualize anotações de PersistentVolumeClaim (PVC).

Configurar o cluster

Um VNode usa um arquivo kubeconfig para se conectar ao cluster. Portanto, emita um certificado (kubeconfig) para o VNode antes de criá-lo.

Nota

Se você usar o certificado de administrador do cluster, poderá pular esta seção.

  1. Conecte-se ao cluster.

  2. Baixe e execute o script de configuração. Escolha TLS bootstrapping ou ServiceAccount para gerar um arquivo kubeconfig.

    TLS Bootstrap

    Para maior segurança, recomendamos o TLS bootstrapping. Esse método implanta automaticamente o componente vnode-approver. Esse componente assina as CSRs enviadas pelos VNodes e é open source no GitHub. Para mais informações, consulte vnode-approver.

    curl -fsSL https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnode-deploy.sh | bash -s -- bootstrap

    ServiceAccount

    Este método não oferece suporte à rotação de certificados. Garanta que o token tenha um longo período de validade ou que não expire. Isso evita que o VNode fique indisponível devido a um certificado expirado.

    curl -fsSL https://eci-docs.oss-cn-beijing.aliyuncs.com/vnode/vnode-deploy.sh | bash -s -- common
  3. Verifique o arquivo kubeconfig.

    O arquivo kubeconfig gerado recebe o nome vnode-config. Execute o comando a seguir para visualizar o arquivo:

    cat vnode-config

    Ao verificar o arquivo, valide os seguintes pontos:

    • Certifique-se de que a VPC onde o VNode será criado consegue alcançar o endereço do servidor (por exemplo, se estão na mesma VPC ou conectados via rede).

      • Se o endereço do servidor for um IP, ele deve ser acessível a partir da VPC do VNode.

      • Se o endereço do servidor for um nome de domínio, ele deve ser resolvido dentro da VPC da Alibaba Cloud, e o IP resultante deve ser acessível a partir da VPC do VNode.

    • Se o parâmetro certificate-authority-data estiver vazio, verifique se o campo correspondente no arquivo ~/.kube/config usa um caminho de arquivo.

    TLS Bootstrap

    apiVersion: v1
    kind: Config
    current-context: kubernetes-admin@kubernetes
    contexts:
    - name: kubernetes-admin@kubernetes
      context:
        cluster: kubernetes-admin@kubernetes
        user: vnode
        namespace: kube-system
    clusters:
    - name: kubernetes-admin@kubernetes
      cluster:
        certificate-authority-data: "*****************************************=="
        server: https://10.16.XX.XX:6443
    users:
    - name: vnode
      user:
        token: ******.****************

    ServiceAccount

    apiVersion: v1
    kind: Config
    current-context: kubernetes-admin@kubernetes
    contexts:
    - name: kubernetes-admin@kubernetes
      context:
        cluster: kubernetes-admin@kubernetes
        user: vnode
        namespace: kube-system
    clusters:
    - name: kubernetes-admin@kubernetes
      cluster:
        certificate-authority-data: "*****************************************=="
        server: https://10.16.XX.XX:6443
    users:
    - name: vnode
      user:
        token: ***********************************************

Criar um VNode

Procedimento

Crie um VNode no console do Elastic Container Instance ou chame uma operação de API.

Console

  1. Faça login no console do Elastic Container Instance.

  2. Na barra de navegação superior, selecione uma região.

  3. No painel de navegação à esquerda, escolha Virtual Node.

  4. Clique em Create Virtual Node.

  5. Configure os parâmetros e clique em OK.

    A tabela a seguir descreve os parâmetros.

    Parâmetro

    Descrição

    VPC, vSwitch, security group

    A VPC, o vSwitch e o grupo de segurança para o VNode. Prepare esses recursos conforme descrito na seção Antes de começar.

    KubeConfig

    O kubeconfig do cluster Kubernetes ao qual o VNode se conecta. Gere este arquivo conforme descrito na seção Configurar o cluster.

    TlsBootstrapEnabled

    Define se o TLS bootstrapping será ativado.

    Ative este parâmetro se você gerou o arquivo kubeconfig usando o método TLS bootstrap. Isso também habilita a rotação de certificados, permitindo que o VNode solicite automaticamente um novo certificado antes que o atual expire.

    Tags

    Tags para vincular ao VNode.

    Use tags para alocação de custos. Após vincular uma tag personalizada ao VNode, use-a para filtrar os custos da instância do VNode durante a análise de custos. Para mais informações, consulte Visualizar faturas divididas com base em tags.

    Taints

    Taints a serem aplicadas ao VNode.

    resource group

    Um grupo de recursos permite agrupar recursos sob sua conta Alibaba Cloud. Cada conta possui um grupo de recursos padrão. Para mais informações, consulte Gerenciamento de Recursos.

    Se nenhum grupo de recursos for especificado, o VNode será adicionado ao grupo de recursos padrão.

API

Chame a operação CreateVirtualNode para criar um VNode. A tabela a seguir descreve os principais parâmetros. Para mais informações, consulte CreateVirtualNode.

Nome

Tipo

Exemplo

Descrição

RegionId

String

cn-shanghai

O ID da região.

VSwitchId

String

vsw-2ze23nqzig8inprou****

O ID do vSwitch usado pelo VNode e suas instâncias ECI.

Especifique de 1 a 10 vSwitches pertencentes à mesma VPC.

SecurityGroupId

String

sg-2ze81zoc3yl7a3we****

O ID do grupo de segurança. O VNode e suas instâncias ECI são adicionados a este grupo de segurança.

KubeConfig

String

JTVDbmFwaVZlcnNpb24lM0ElMjB2MSU1Q25jbHVzdGVycyUzQSU1Q24tJTIwY2x1c3RlciUzQSU1Q24uLi

O kubeconfig para o cluster Kubernetes do VNode. O valor deve estar codificado em Base64.

TlsBootstrapEnabled

Boolean

true

Ative este parâmetro se você gerou o arquivo kubeconfig usando o método TLS bootstrap. Isso também habilita a rotação de certificados, permitindo que o VNode solicite automaticamente um novo certificado antes que o atual expire.

Verificar o resultado

Após criar o VNode, aguarde alguns instantes. Em seguida, faça login no cluster Kubernetes e execute o comando kubectl get nodes para visualizar as informações do nó.

  • Se o VNode for encontrado, ele foi criado com sucesso. A saída esperada é semelhante à seguinte:

    [root@k8s-master ~]# kubectl get nodes
    NAME                          STATUS   ROLES                AGE    VERSION
    cn-beijing.vnd-2-xxx.sx61at   Ready    agent                132m   v1.20.6
    k8s-master                    Ready    control-plane,master 169m   v1.20.6
  • Se o VNode não for encontrado, a criação falhou. Recomendamos solucionar o problema com base nos eventos do VNode.

    No console do Elastic Container Instance, acesse a página Virtual Node. Clique no ID do VNode desejado e visualize os eventos na aba Events.

    A lista a seguir descreve erros comuns em eventos:

    • failed to get kubernetes server version, Get \"https://10.50.XX.XX:6443/version?timeout=32s\": net/http: request canceled (Client.Timeout exceeded while awaiting headers

      Esse erro indica que a VPC onde o VNode reside não consegue se conectar ao endereço IP do servidor de API do Kubernetes. Certifique-se de que o VNode e o servidor de API estejam na mesma VPC. Caso contrário, garanta que haja conectividade de rede entre eles.

    • failed to get kubernetes server version, Get \"https://lb.kubesphere.local:6443/version?timeout=32s\": dial tcp: lookup lb.kubesphere.local on 100.100.X.:53: no such host

      Este erro indica que o nome de domínio do servidor de API do Kubernetes não pode ser resolvido na VPC. Configure o Alibaba Cloud DNS PrivateZone para adicionar um registro DNS para o nome de domínio.

Nota

Se tiver dúvidas ou problemas ao conectar um VNode a um cluster Kubernetes autogerenciado, procure pelo grupo 44666389 no DingTalk para entrar no grupo de suporte do VNode.

Impedir o agendamento de DaemonSet para um VNode

Um VNode é um nó virtual e não pode executar DaemonSets. Após criar um VNode, adicione uma nodeAffinity ao DaemonSet kube-proxy para evitar que DaemonSets sejam agendados para o VNode.

  1. Edite a configuração do DaemonSet.

    kubectl -n kube-system edit ds kube-proxy
  2. Configure a nodeAffinity.

    Adicione o YAML a seguir em spec.template.spec:

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

Agendar pods para um VNode

Depois de criar um VNode, use os métodos a seguir para agendar pods para execução como instâncias ECI no VNode.

  • Agendamento manual

    Agende pods manualmente para um VNode configurando nodeSelector e tolerations, ou especificando um nodeName. Para mais informações, consulte Agendar pods para um VNode.

  • Agendamento automático

    Após implantar o componente eci-profile, configure um seletor personalizado para agendar automaticamente os pods correspondentes para o VNode. Para mais informações, consulte Usar eci-profile para agendar pods para um VNode.