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
Sur la page Clusters ACK, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
Sélectionnez le namespace
kube-system. Dans la colonne du ConfigMapeci-profile, cliquez sur .Cliquez sur . Pour , saisissez
enableWindowsAmd64Node. Pour , saisisseztrue. Ensuite, cliquez sur .Dans le volet de navigation de gauche, choisissez pour vérifier que le nœud virtuel Windows a bien été ajouté.
Kubectl
Obtenir le kubeconfig du cluster et utiliser kubectl pour se connecter au cluster.
-
Modifiez le ConfigMap
eci-profiledans votre cluster.kubectl edit -n kube-system cm/eci-profile -
Dans la section
data, ajoutez la configurationenableWindowsAmd64Node: "true".data: ...... enableWindowsAmd64Node: "true" # Enable the Windows node ...... -
Vérifiez que le nœud virtuel Windows existe.
kubectl get nodes -l kubernetes.io/os=windowsRé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
-
Créez une charge de travail Windows et montez le Secret dans le répertoire
secretsdu lecteur C.Créez un fichier nommé
windows-deploy-secret-example.yamlavec le contenu suivant, puis exécutez la commandekubectl apply -f windows-deploy-secret-example.yamlpour 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 -
Vérifiez que la charge de travail s'exécute comme prévu et consultez le contenu du Secret.
-
Ouvrez un shell dans le conteneur.
kubectl exec -it deployment/windows-deployment-secret-example -- cmd -
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
Installez le composant ack-extend-network-controller. Pour plus d'informations, consultez la rubrique Associer une EIP à un Pod à l'aide d'une annotation.
-
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.yamlavec le contenu suivant, puis exécutez la commandekubectl apply -f windows-deploy-eip-example.yamlpour 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" -
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.