Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Planifier des pods sur des nœuds virtuels Windows

Dernière mise à jour :Aug 11, 2026

ECI prend désormais en charge les instances exécutant le système d'exploitation Windows. Si vos conteneurs nécessitent un environnement Windows, ajoutez un nœud virtuel Windows à votre cluster et planifiez-y des pods. Cette opération crée un pod ECI basé sur Windows (une instance ECI) pour exécuter vos conteneurs.

Prérequis

  • Le module complémentaire ACK Virtual Node de votre cluster doit être en version v2.11.0-rc.0 ou ultérieure. Pour plus d'informations, consultez les rubriques Gérer les composants et ACK Virtual Node.

Limitations

  • Lors de la création d'une instance ECI Windows, les spécifications de l'instance doivent comporter au moins 2 vCPU et 4 Go de mémoire.

  • La version de l'image du conteneur Windows doit être 10.0.20348.*, ce qui correspond à Windows Server 2022.

  • Les fonctionnalités suivantes ne sont pas prises en charge :

    • Disques locaux.

    • Calcul GPU.

    • Conteneurs Windows HostProcess.

    Pour obtenir la liste complète des fonctionnalités non prises en charge, consultez la documentation Conteneurs Windows dans Kubernetes.

Ajouter un nœud virtuel Windows

Suivez les étapes ci-dessous pour modifier le ConfigMap eci-profile et ajouter un nœud virtuel Windows à votre cluster.

Console

  1. Sur la page Clusters ACK, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Configurations > ConfigMaps.

  2. Sélectionnez le namespace kube-system. Dans la colonne du ConfigMap eci-profile, cliquez sur .

  3. Cliquez sur . Pour , saisissez enableWindowsAmd64Node. Pour , saisissez true. Ensuite, cliquez sur .

  4. Dans le volet de navigation de gauche, choisissez Nodes > Node Pools pour vérifier que le nœud virtuel Windows a bien été ajouté.

Kubectl

  1. Obtenir le kubeconfig du cluster et utiliser kubectl pour se connecter au cluster.

  2. Modifiez le ConfigMap eci-profile dans votre cluster.

    kubectl edit -n kube-system cm/eci-profile
  3. Dans la section data, ajoutez la configuration enableWindowsAmd64Node: "true".

    data:
      ......
      enableWindowsAmd64Node: "true"   # Enable the Windows node
      ......
  4. Vérifiez que le nœud virtuel Windows existe.

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

    Résultat attendu :

    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

Exemples de charges de travail Windows

Étant donné que les nœuds virtuels Windows possèdent le label kubernetes.io/os: windows, vous devez utiliser nodeSelector pour spécifier un nœud virtuel Windows lors de la création d'une charge de travail Windows.

Utiliser un Secret dans une charge de travail Windows

  1. Créez une charge de travail Windows et montez le Secret dans le répertoire secrets du lecteur C.

    Créez un fichier nommé windows-deploy-secret-example.yaml avec le contenu suivant, puis exécutez la commande kubectl apply -f windows-deploy-secret-example.yaml pour créer les ressources.
    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. Vérifiez que la charge de travail s'exécute comme prévu et consultez le contenu du Secret.

    1. Ouvrez un shell dans le conteneur.

      kubectl exec -it deployment/windows-deployment-secret-example -- cmd
    2. Dans l'interface CLI, vérifiez le contenu du 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

Associer une adresse IP élastique (EIP) à une charge de travail Windows

  1. Installez le composant ack-extend-network-controller. Pour plus d'informations, consultez la rubrique Associer une EIP à un Pod à l'aide d'une annotation.

  2. Utilisez l'annotation network.alibabacloud.com/pod-with-eip: "true" pour créer une charge de travail Windows.

    Créez un fichier windows-deploy-eip-example.yaml avec le contenu suivant, puis exécutez la commande kubectl apply -f windows-deploy-eip-example.yaml pour créer les ressources.
    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. Récupérez l'EIP du 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']}"
    L'EIP renvoyée peut varier.