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
Na página ACK Clusters, clique em no nome do cluster. No painel de navegação à esquerda, clique em .
Selecione o namespace
kube-system. Na coluna Actions do ConfigMapeci-profile, clique em Edit.Clique em Add. Em Name, insira
enableWindowsAmd64Node. Em Value, insiratrue. Em seguida, clique em OK.No painel de navegação à esquerda, escolha para verificar se o nó virtual Windows foi adicionado.
Kubectl
Obtain the cluster kubeconfig and use kubectl to connect to the cluster.
-
Edite o ConfigMap
eci-profileno cluster.kubectl edit -n kube-system cm/eci-profile -
Na seção
data, adicione a configuraçãoenableWindowsAmd64Node: "true".data: ...... enableWindowsAmd64Node: "true" # Enable the Windows node ...... -
Verifique se o nó virtual Windows existe.
kubectl get nodes -l kubernetes.io/os=windowsSaí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
-
Crie um workload Windows e monte o Secret no diretório
secretsna unidade C.Crie um arquivo chamado
windows-deploy-secret-example.yamlcom o conteúdo abaixo e execute o comandokubectl apply -f windows-deploy-secret-example.yamlpara 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 -
Verifique se o workload está em execução conforme esperado e confira o conteúdo do Secret.
-
Abra um shell no contêiner.
kubectl exec -it deployment/windows-deployment-secret-example -- cmd -
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
Instale o add-on ack-extend-network-controller. Para mais informações, consulte Attach an EIP to a Pod by using an annotation.
-
Use a anotação
network.alibabacloud.com/pod-with-eip: "true"para criar um workload Windows.Crie um arquivo
windows-deploy-eip-example.yamlcom o conteúdo abaixo e executekubectl apply -f windows-deploy-eip-example.yamlpara 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" -
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á.