在Windows节点上使用PowerShell

更新时间:
复制为 MD 格式

ACS集群的Windows节点上执行自定义PowerShell脚本时,需要创建Windows容器Pod并配置合适的启动命令。本文介绍如何创建运行PowerShell脚本的Windows Server Pod,并验证脚本执行结果。

前提条件

创建Windows Server Pod

创建一个Windows容器的Job,通过PowerShell脚本输出一行日志。

控制台

  1. 登录容器计算服务控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择工作负载 > 任务

  3. 任务页面,单击使用YAML创建资源。将以下YAML内容复制到编辑器中,然后单击创建

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: windows-job-powershell
    spec:
      backoffLimit: 0
      template:
        metadata:
          labels:
            job-name: windows-job-powershell
            alibabacloud.com/acs: "true"
        spec:
          nodeSelector:
            kubernetes.io/os: windows  # 确保调度到 Windows 节点
          restartPolicy: Never
          containers:
          - name: test
            image: registry-cn-hangzhou.ack.aliyuncs.com/test/servercore:ltsc2022
            command:
              - powershell.exe
              - -NoProfile
              - -ExecutionPolicy
              - Bypass
              - -Command
              - |
                Write-Host "Hello from Windows Job"
                Start-Sleep -Seconds 3600
            resources:
              requests:
                cpu: "4"
                memory: "8Gi"
              limits:
                cpu: "4"
                memory: "8Gi"
  4. 创建完成后,在弹出的对话框中单击查看,确认Pod状态为Running

kubectl

  1. 已使用kubectl连接Kubernetes集群。具体操作,请参见获取集群kubeconfig并通过kubectl工具连接集群

  2. 将以下YAML内容保存为windows-job-powershell.yaml文件。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: windows-job-powershell
    spec:
      backoffLimit: 0
      template:
        metadata:
          labels:
            job-name: windows-job-powershell
        spec:
          nodeSelector:
            kubernetes.io/os: windows  # 确保调度到 Windows 节点
          restartPolicy: Never
          containers:
          - name: test
            image: registry-cn-hangzhou.ack.aliyuncs.com/test/servercore:ltsc2022
            command:
              - powershell.exe
              - -NoProfile
              - -ExecutionPolicy
              - Bypass
              - -Command
              - |
                Write-Host "Hello from Windows Job"
                Start-Sleep -Seconds 3600
            resources:
              requests:
                cpu: "4"
                memory: "8Gi"
              limits:
                cpu: "4"
                memory: "8Gi"
  3. 执行以下命令创建Job。

    kubectl apply -f windows-job-powershell.yaml
  4. 执行以下命令确认Pod状态为Running

    kubectl get job windows-job-powershell

    预期输出:

    NAME                     STATUS    COMPLETIONS   DURATION   AGE
    windows-job-powershell   Running   0/1           8m50s      8m50s

验证脚本执行结果

控制台

  1. 在集群详情页左侧导航栏,选择工作负载 > 任务

  2. 任务页面单击目标任务名称,进入任务详情页。切换到日志标签页,展示结果如下表示脚本运行成功。

    Hello from Windows Job

kubectl

执行以下命令,在Pod内部查看日志文件内容。

kubectl logs job/windows-job-powershell

预期输出:

Hello from Windows Job

资源清理

测试完成后,执行以下命令删除创建的Pod资源。

kubectl delete job windows-job-powershell