教學課程:在 Azure Kubernetes Service 叢集中的 Azure 容器執行個體 上部署虛擬節點
在本教學課程中,您會使用 Azure 入口網站 來部署 Azure Kubernetes Service (AKS) 叢集。 部署 AKS 叢集之後,您可以使用 Helm 圖表在 Azure 容器執行個體 上部署虛擬節點。
必要條件
本教學課程假設您已安裝下列工具:
- Azure CLI
- kubectl (1.29+版)
- Helm
- Git
登入 Azure
在 https://portal.azure.com 登入 Azure 入口網站
如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
為您的 AKS 叢集建立虛擬網路
在 Azure 入口網站的首頁中,選取 [建立資源]。
選取 [網络>虛擬網络]。
在 [ 基本] 頁面上,選擇訂用帳戶並輸入下列值:
- 資源群組:建立新的>
virtualnodesresourcegroup
- 虛擬網路名稱:
myvirtualnetwork
- 區域:
East US
在 [ IP 位址] 頁面上,設定下列位址空間和子網:
- 10.0.0.0/16:
default
大小為/24的子網 - 10.1.0.0/16:
aks
大小為/16的子網 - 10.2.0.0/16:
cg
大小/16- 子網
cg
必須具有對Microsoft.ContainerInstance/containerGroups
的子網委派。 - 如果您的 Pod 在虛擬節點中執行需要輸出網路,您必須設定 NAT 閘道,並將
cg
子網設定為使用它。 如需此設定的指示,請參閱為來自容器群組的輸出流量設定靜態IP位址的NAT閘道。
- 子網
將所有其他設定保留預設值,然後選取 [檢閱 + 建立]。
驗證完成時,會顯示虛擬網路設定的摘要。 選取 [建立] 以提交虛擬網路部署要求。
部署開始時會出現通知,指出部署正在進行中。 部署虛擬網路時會顯示另一個通知。
建立 AKS 叢集
在 Azure 入口網站的首頁中,選取 [建立資源]。
選取 [容器]>[Azure Kubernetes Service (AKS)]。
在 [ 基本] 頁面上,選擇您用來建立虛擬網路的相同訂用帳戶,並輸入下列值:
- 資源群組:
virtualnodesresourcegroup
- 叢集預設組態:
Dev/Test
- Kubernetes 叢集名稱:
virtualnodescluster
- 區域:
East US
- Kubernetes 版本:任何以 開頭
1.29.
的版本 - 例如1.29.10
- 自動升級:
Enabled with patch
在 [ 節點集區] 頁面上,選取節點集區至少有 4 個 vCPU 和 16 GB RAM agentpool
的任何 VM SKU。 這些節點將用來裝載虛擬節點基礎結構。 請勿選取 Enable virtual nodes
- 這是指先前 的 AKS 虛擬節點 供應專案。
在 [ 網络] 頁面上,輸入下列值:
- 網路組態:
Azure CNI Node Subnet
- 自備 Azure 虛擬網路:
Enabled
- 虛擬網路:
myvirtualnetwork
- 叢集子網:
aks
- Kubernetes 服務地址範圍:
10.4.0.0/16
- Kubernetes DNS 服務 IP 位址:
10.4.0.10
- 網路原則:
Calico
將所有其他設定保留預設值,然後選取 [檢閱 + 建立]。
驗證完成時,會顯示 AKS 叢集設定的摘要。 選取 [建立] 以提交 AKS 叢集部署要求。
部署開始時會出現通知,指出部署正在進行中。 當 AKS 叢集已部署時,會顯示另一個通知。
將許可權指派給 AKS 叢集受控識別
當您部署 AKS 叢集時,AKS 會在相同的訂用帳戶中建立 節點資源群組 ,以裝載叢集基礎結構。 根據預設,此資源群組的名稱類似 MC_<resource group>_<AKS cluster>_<region>
。 在本教學課程中,節點資源群組應具有名稱 MC_virtualnodesresourcegroup_virtualnodescluster_eastus
。
在節點資源群組中建立的其中一個資源是名為 的 virtualnodescluster_agentpool
受控識別。 流覽至此受控識別,然後選取 [Azure 角色指派]。 然後新增下列兩個角色指派:
- 範圍:
Resource group
- 訂用帳戶:
<your subscription name>
- 資源群組:
MC_virtualnodesresourcegroup_virtualnodescluster_eastus
- 角色:
Contributor
此角色指派允許在節點資源群組中建立 ACI 容器群組。
- 範圍:
Resource group
- 訂用帳戶:
<your subscription name>
- 資源群組:
virtualnodesresourcegroup
- 角色:
Contributor
此角色指派可讓 ACI 容器群組插入您在此資源群組中建立的虛擬網路。
使用 Helm 圖表在 Azure 容器執行個體 上安裝虛擬節點
使用 Azure CLI 來提取您所建立 AKS 叢集的組態和認證。 這會為您的 AKS 叢集設定 kubectl。
az login
az account set --subscription <your subscription ID>
az aks get-credentials --name virtualnodescluster --resource-group virtualnodesresourcegroup
此外,我們會在您的訂用帳戶上註冊 ACI 資源提供者,以便部署容器群組。
az provider register -n Microsoft.ContainerInstance
複製 virtualnodesOnAzureContainerInstances GitHub 存放庫。 在 Azure 容器執行個體 上安裝虛擬節點的 Helm 圖表位於 Helm/virtualnode
資料夾中。
使用下列命令安裝 Helm 圖表:
helm install virtualnode <cloned repository location>\Helm\virtualnode
在一分鐘內,將會註冊新的虛擬節點,並在AKS叢集中處於就緒狀態。 您可以使用 kubectl 檢查 AKS 叢集節點的狀態。
kubectl get nodes
將第一個 Pod 部署至虛擬節點
您可以像任何其他 Kubernetes 節點一樣與虛擬節點互動。 例如,下列範例 YAML 會將 Pod 部署至 AKS 叢集中的虛擬節點-請注意,使用節點選取器和容忍來適當地放置 Pod。 您可以使用 kubectl apply 部署 YAML。
apiVersion: v1
kind: Pod
metadata:
annotations:
name: demo-pod
spec:
containers:
- command:
- /bin/bash
- -c
- 'counter=1; while true; do echo "Hello, World! Counter: $counter"; counter=$((counter+1)); sleep 1; done'
image: mcr.microsoft.com/azure-cli
name: hello-world-counter
resources:
limits:
cpu: 2250m
memory: 2256Mi
requests:
cpu: 100m
memory: 128Mi
nodeSelector:
virtualization: virtualnode2
tolerations:
- effect: NoSchedule
key: virtual-kubelet.io/provider
operator: Exists
部署 Pod 之後,您可以和「一般」Kubernetes Pod 一樣與它互動。
例如,若要查看 Pod 狀態和事件(適用於尋找錯誤!):
kubectl describe pods demo-pod
若要檢視 Pod 的記錄:
kubectl logs demo-pod
若要取得 Pod 的殼層:
kubectl exec demo-pod -it -- /bin/bash
下一步
在本教學課程中,您已在 Azure 入口網站 中建立 AKS 叢集、使用 Helm 圖表在 Azure 容器執行個體 上部署虛擬節點,並將 Pod 部署到虛擬節點上。 現在您已基本熟悉如何在虛擬節點上執行 Kubernetes Pod,而且您可以立即利用這些 Pod 上的大部分 Kubernetes 功能和建構!
如果您想要利用 Pod 的特殊虛擬節點功能或行為,請參閱 Pod 自定義。
如果您想要自定義虛擬節點安裝,請參閱 節點自定義。
如果您打算在虛擬節點上部署大規模工作負載(每分鐘數千個 Pod),我們有 最佳做法和建議。