Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Agende pods em nós virtuais Windows

Última atualização: Sep 15, 2026

O ECI agora oferece suporte a instâncias com o sistema operacional Windows. Se seus contêineres exigem um ambiente Windows, adicione um nó virtual Windows ao cluster e agende pods nele. Isso cria um pod ECI baseado em Windows (uma instância ECI) para executar seus contêineres.

Pré-requisitos

  • A criação de workloads Windows é um recurso beta disponível apenas por convite. Para testar esse recurso, envie um ticket.

  • O add-on ACK Virtual Node no cluster deve estar na versão v2.11.0-rc.0 ou posterior. Para mais informações, consulte Gerencie componentes e ACK Virtual Node.

Limitações

  • Ao criar uma instância ECI Windows, a especificação da instância deve ter no mínimo 2 vCPU e 4 GiB de memória.

  • A versão da imagem do contêiner Windows deve ser 10.0.20348.*, correspondente ao Windows Server 2022.

  • Os seguintes recursos não têm suporte:

    • Discos locais.

    • Computação GPU.

    • Contêineres Windows HostProcess.

    Para obter a lista completa de recursos sem suporte, consulte Contêineres Windows no Kubernetes.

Adicione um nó virtual Windows

Siga estas etapas para modificar o ConfigMap eci-profile e adicionar um nó virtual Windows ao cluster.

Console

  1. Na página ACK Clusters, clique em no nome do cluster. No painel de navegação à esquerda, clique em Configurations > ConfigMaps.

  2. Selecione o namespace kube-system. Na coluna Actions do ConfigMap eci-profile, clique em Edit.

  3. Clique em Add. Em Name, insira enableWindowsAmd64Node. Em Value, insira true. Em seguida, clique em OK.

  4. No painel de navegação à esquerda, escolha Nodes > Node Pools para verificar se o nó virtual Windows foi adicionado.

Kubectl

  1. Obtain the cluster kubeconfig and use kubectl to connect to the cluster.

  2. Edite o ConfigMap eci-profile no cluster.

    kubectl edit -n kube-system cm/eci-profile
  3. Na seção data, adicione a configuração enableWindowsAmd64Node: "true".

    data:
      ......
      enableWindowsAmd64Node: "true"   # Enable the Windows node
      ......
  4. Verifique se o nó virtual Windows existe.

    kubectl get nodes -l kubernetes.io/os=windows

    Saída esperada:

    NAME                                          STATUS   ROLES   AGE   VERSION
    virtual-kubelet-cn-hangzhou-i-windows-amd64   Ready    agent   23m   v1.34.3-aliyun.1
    virtual-kubelet-cn-hangzhou-j-windows-amd64   Ready    agent   23m   v1.34.3-aliyun.1
    virtual-kubelet-cn-hangzhou-k-windows-amd64   Ready    agent   23m   v1.34.3-aliyun.1

Exemplos de workloads Windows

Como os nós virtuais Windows possuem o rótulo kubernetes.io/os: windows, use nodeSelector para especificar um nó virtual Windows ao criar um workload Windows.

Use um Secret em um workload Windows

  1. Crie um workload Windows e monte o Secret no diretório secrets na unidade C.

    Crie um arquivo chamado windows-deploy-secret-example.yaml com o conteúdo abaixo e execute o comando kubectl apply -f windows-deploy-secret-example.yaml para criar os recursos.
    apiVersion: v1
    kind: Secret
    metadata:
      name: windows-test-secret
    type: Opaque
    stringData:
      username: testuser
      password: testpass123
      secret.txt: "This is a secret file for Windows Pod"
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: windows-deployment-secret-example
      labels:
        app: windows-secret-app
    spec:
      replicas: 1 # For this example, the number of replicas is set to 1
      selector:
        matchLabels:
          app: windows-secret-app
      template:
        metadata:
          labels:
            app: windows-secret-app
            alibabacloud.com/acs: "true"
        spec:
          nodeSelector:
            kubernetes.io/os: windows
          containers:
          - name: test
            image: registry-cn-hangzhou.ack.aliyuncs.com/test/nanoserver:ltsc2022
            command: ["ping", "-t", "localhost"]
            resources:
              requests:
                cpu: "4"         
                memory: "8Gi"     
              limits:
                cpu: "4"         
                memory: "8Gi"
            volumeMounts:
            - name: secret-volume
              mountPath: C:\secrets
              readOnly: true
          volumes:
          - name: secret-volume
            secret:
              secretName: windows-test-secret
  2. Verifique se o workload está em execução conforme esperado e confira o conteúdo do Secret.

    1. Abra um shell no contêiner.

      kubectl exec -it deployment/windows-deployment-secret-example -- cmd
    2. No CLI, verifique o conteúdo do Secret.

      # Change to the directory where the Secret is mounted.
      C:\>cd secrets
      
      # View the Secret content.
      C:\secrets>type secret.txt
      This is a secret file for Windows Pod

Anexe um EIP a um workload Windows

  1. Instale o add-on ack-extend-network-controller. Para mais informações, consulte Attach an EIP to a Pod by using an annotation.

  2. Use a anotação network.alibabacloud.com/pod-with-eip: "true" para criar um workload Windows.

    Crie um arquivo windows-deploy-eip-example.yaml com o conteúdo abaixo e execute kubectl apply -f windows-deploy-eip-example.yaml para criar os recursos.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: windows-deployment-eip-example
      labels:
        app: windows-eip-app
    spec:
      replicas: 1 # For this example, the number of replicas is set to 1
      selector:
        matchLabels:
          app: windows-eip-app
      template:
        metadata:
          labels:
            app: windows-eip-app
            alibabacloud.com/acs: "true"
          annotations:
            network.alibabacloud.com/pod-with-eip: "true"
        spec:
          nodeSelector:
            kubernetes.io/os: windows
          containers:
          - name: test
            image: registry-cn-hangzhou.ack.aliyuncs.com/test/nanoserver:ltsc2022
            command: ["ping", "-t", "localhost"]
            resources:
              requests:
                cpu: "4"
                memory: "8Gi"
              limits:
                cpu: "4"
                memory: "8Gi"
  3. Obtenha o EIP do Pod.

    kubectl get pod $(kubectl get pods -l app=windows-eip-app -o jsonpath='{.items[0].metadata.name}') -o jsonpath="{.metadata.annotations['network\.alibabacloud\.com/allocated-eipAddress']}"
    O EIP retornado variará.