建立 Windows Server 容器
適用於:Azure 本機版本 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 容器的節點上。
建立名為 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 資訊清單。
使用 kubectl apply 命令來部署應用程式並指定 YAML 資訊清單的名稱:
kubectl apply -f sample.yaml --kubeconfig .\\aks-arc-kube-config
下列範例輸出顯示已成功建立部署和服務:
deployment.apps/sample created
service/sample created
測試應用程式
當應用程式執行時,Kubernetes 服務會將應用程式前端公開至網際網路。 此程序可能需要幾分鐘才能完成。 服務有時可能需要超過幾分鐘的時間來佈建。 布建最多需要 10 分鐘。
使用 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
開啟網頁瀏覽器至範例服務的外部IP位址和埠 ,以查看作用中的範例 應用程式。
如果您在嘗試載入頁面時收到連線逾時,您應該確認範例應用程式已準備好使用
kubectl get pods --watch
命令。 有時候,當您的外部IP位址可用時,Windows 容器不會啟動。
刪除節點集區
使用 命令移除節點集區 az akshybrid nodepool delete
:
az aksarc nodepool delete -g $myResourceGroup --cluster-name $myAKSCluster --name $mynodepool --no-wait