建立 Windows Server 容器

適用於:Azure Stack HCI 版本 23H2

本文說明如何使用 Azure CLI 將節點集區部署到執行 Windows Server 容器的現有 AKS 叢集。 它也描述如何將 Windows Server 容器中的 ASP.NET 範例應用程式部署到叢集。

必要條件

遵循如何建立 AKS 叢集中的 指示建立 AKS 叢集

新增節點集區

根據預設,Kubernetes 叢集會使用可執行 Linux 容器的節點集區來建立。 您必須新增可在 Linux 節點集區旁執行 Windows Server 容器的另一個節點集區。

使用 az aksarc nodepool add 命令搭配 參數 --os-type Windows新增具有 Windows 容器主機的節點集區。 如果未指定操作系統 SKU,節點集區會根據叢集的 Kubernetes 版本設定為預設 OS。 Windows Server 2022 是 Kubernetes 1.25.0 版和更新版本的預設作業系統。 Windows Server 2019 是舊版的預設作業系統。

  • 若要使用 Windows Server 2019,請指定下列參數:
    • 請將 os-type 設定為 Windows
    • 請將 os-sku 設定為 Windows2019
  • 若要使用 Windows Server 2022,請指定下列參數:
    • 請將 os-type 設定為 Windows
    • os-sku 設定為 Windows2022 (選擇性)。

下列命令會建立名為 $mynodepool 的新節點集區,並將它新增至 $myAKSCluster 一個 Windows Server 2022 節點:

az aksarc nodepool add --resource-group $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --node-count 1 --os-type Windows --os-sku Windows2022

連線到 AKS 叢集

現在,您可以從本機計算機執行 az connectedk8s proxy 命令,以連線到 Kubernetes 叢集。 執行此命令之前,請務必先登入 Azure。 如果您有多個 Azure 訂用帳戶,請使用 az account set 命令選取適當的訂用帳戶識別碼。

此命令會將 Kubernetes 叢集的 kubeconfig 下載到本機計算機,並開啟內部部署 Kubernetes 叢集的 Proxy 連線通道。 只要此命令執行,通道就會開啟。 只要您想要存取叢集,即可執行此命令。 如果命令逾時,請關閉 CLI 視窗,開啟新的命令,然後再次執行命令。

您必須擁有載入 AKS 叢集之資源群組的參與者許可權,才能成功執行下列命令:

az connectedk8s proxy --name $aksclustername --resource-group $resource_group --file .\aks-arc-kube-config

預期輸出:

Proxy is listening on port 47011
Merged "aks-workload" as current context in .\aks-arc-kube-config
Start sending kubectl requests on 'aks-workload' context using kubeconfig at .\aks-arc-kube-config
Press Ctrl+C to close proxy.

讓此工作階段保持執行狀態,並從不同的終端機/命令提示字元連線到您的 Kubernetes 叢集。 執行 kubectl get 命令,確認您可以連線到 Kubernetes 叢集。 這個指令會傳回叢集節點的清單:

kubectl get node -A --kubeconfig .\aks-arc-kube-config

下列範例輸出會顯示在先前步驟中建立的節點。 確定節點的狀態為就緒

NAME              STATUS   ROLES           AGE     VERSION
moc-lesdc78871d   Ready    control-plane   6d8h    v1.26.3
moc-lupeeyd0f8c   Ready    <none>          6d8h    v1.26.3
moc-ww2c8d5ranw   Ready    <none>          7m18s   v1.26.3

部署應用程式

Kubernetes 資訊清單檔會定義叢集所需的狀態,例如要執行哪些容器映像。

您可以使用 YAML 指令清單來建立在 Windows Server 容器中執行 ASP.NET 範例應用程式所需的所有物件。 此指令清單包含 ASP.NET 範例應用程式的 Kubernetes 部署 ,以及 Kubernetes 服務,以從因特網存取應用程式。

ASP.NET 範例應用程式會作為 .NET Framework 範例一部分提供,並在 Windows Server 容器中執行。 AKS 需要 Windows Server 容器根據 Windows Server 2019 或更新版本的映像。 Kubernetes 指令清單檔也必須定義 節點選取器 ,以確保您 ASP.NET 範例應用程式的 Pod 排程在可執行 Windows Server 容器的節點上。

  1. 建立名為 sample.yaml 的檔案,並在下列YAML定義中複製:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sample
      labels:
        app: sample
    spec:
      replicas: 1
      template:
        metadata:
          name: sample
          labels:
            app: sample
        spec:
          nodeSelector:
            "kubernetes.io/os": windows
          containers:
          - name: sample
            image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
            resources:
              limits:
                cpu: 1
                memory: 800M
            ports:
              - containerPort: 80
      selector:
        matchLabels:
          app: sample
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: sample
    spec:
      type: LoadBalancer
      ports:
      - protocol: TCP
        port: 80
      selector:
        app: sample
    

    如需 YAML 資訊清單檔案的詳細資訊,請參閱部署和 YAML 資訊清單

  2. 使用 kubectl apply 命令來部署應用程式並指定 YAML 資訊清單的名稱:

    kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
    

下列範例輸出顯示已成功建立部署和服務:

deployment.apps/sample created
service/sample created

測試應用程式

當應用程式執行時,Kubernetes 服務會將應用程式前端公開至網際網路。 此程序可能需要幾分鐘才能完成。 服務有時可能需要超過幾分鐘的時間來佈建。 布建最多需要 10 分鐘。

  1. 使用 kubectl get service 命令搭配 --watch 引數來監視進度。

    kubectl get service sample --watch --kubeconfig .\aks-arc-kube-config
    

    一開始,輸出顯示範例服務的 EXTERNAL-IP擱置

    NAME   TYPE         CLUSTER-IP EXTERNAL-IP PORT(S)      AGE
    sample LoadBalancer 10.0.37.27 <pending>   80:30572/TCP 6s
    

    當 EXTERNAL-IP 位址從暫止變更為 IP 位址時,請使用 CTRL-C 停止 kubectl 監看程式。 下列範例輸出顯示指派給服務的有效公用 IP 位址:

    sample LoadBalancer 10.0.37.27 52.179.23.131 80:30572/TCP 2m
    
  2. 開啟網頁瀏覽器至範例服務的外部IP位址和埠 ,以查看作用中的範例 應用程式。

    顯示範例應用程式 ASP.NET 螢幕快照。

    如果您在嘗試載入頁面時收到連線逾時,您應該確認範例應用程式已準備好使用 kubectl get pods --watch 命令。 有時候,當您的外部IP位址可用時,Windows 容器不會啟動。

刪除節點集區

使用 命令移除節點集區 az akshybrid nodepool delete

az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait

下一步

由 Arc 啟用的 AKS 概觀