使用 CLI 來使用 Azure Stack Hub 上的 Azure Kubernetes Service
本指南可協助您開始使用 Azure Stack Hub 上的 Azure Kubernetes Service (AKS) 服務。 本文描述可讓您熟悉 Azure Stack Hub 上的 AKS 的一組主要案例。 Azure Stack Hub 中可用功能是可供全球 Azure 使用的子集。
在下列各節中,您將會:
- 完成在 Azure Stack Hub 上使用 AKS 的必要條件。
- 使用 Azure CLI 和 Azure Stack Hub 使用者入口網站完成 AKS 叢集的生命週期作業。
安裝 Azure CLI
您將需要為您的電腦安裝具有 AKS 支援的 Azure CLI。 準備乾淨的電腦,Linux 或 Windows 電腦,以安裝具有 AKS 支援的 Azure CLI 預覽版本。 確保電腦未安裝 Azure CLI,以避免與您接下來將安裝的 Azure CLI 預覽發生衝突。 下列大部分的指示假設您使用 Linux VM,但您可以在產品文件中找到 Windows 的同等步驟。
安裝具有 AKS 支援的 Azure CLI 之後,請勿升級 Azure CLI。 如果您升級,則會由缺少 AKS 支援的生產環境就緒版本取代。
若為 Ubuntu 電腦,請遵循在 Linux 上安裝 Azure CLI 的指示。
安裝具有 AKS 支援的 Azure CLI 之後,請驗證下列 Azure CLI 命令,以驗證認安裝是否正確:
az --version
這是 Linux 機器的輸出:
Azure CLI 應該是 2.28.0 或更高版本。
連線至 Azure Stack Hub
連線至您的 Azure Stack Hub 端點。 您必須使用 Azure CLI 來建立您要連線的特定 Azure Stack Hub 環境。 您可以在連線至 Azure Stack Hub 中找到相關指示
註冊您的環境,使得 Azure CLI 可以連線到您執行個體的 Azure Stack Hub Resource Manager 端點。 更新下列程式碼片段中的 URL,然後執行下列命令:
az cloud register \ -n aks-preview-test \ --endpoint-resource-manager "https://management.redmond.xbx.nxn.microsoft.com" \ --suffix-storage-endpoint "redmond.xbx.nxn.microsoft.com" \ --suffix-keyvault-dns ".vault.redmond.xbx.nxn.microsoft.com"
設定使用中的環境。
az cloud set -n aks-preview-test
更新您的環境設定。
az cloud update --profile 2020-09-01-hybrid
連接到環境。
az login -u 'user@contoso.onmicrosoft.com' -p 'xxxxxxx' --tenant 'contoso.onmicrosoft.com'
注意
如果您觸發憑證驗證失敗錯誤,則可能是您的用戶端電腦未信任 Azure Resource Manager 端點所使用的憑證。 若是如此,您需要匯出 Azure Stack Hub 端點中使用的憑證,並信任該憑證。 您可以在匯出 Azure Stack Hub CA 根憑證中尋找指示。
特別是,針對 Linux 機器,請參閱:linux 上的Microsoft Entra識別碼
將 Azure CLI 工作階段中的訂用帳戶設定為預設值,如下:
az account set --subscription <subscription-id>
註冊 Azure Kubernetes Service 資源提供者。 列出您的訂用帳戶中的可用資源提供者。
az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table
輸出應會顯示如下:
記下 Microsoft.ContainerService 資源提供者,然後註冊提供者:
az provider register --namespace Microsoft.ContainerService
重新執行步驟 7 以驗證資源提供者註冊狀態。 註冊可能需要幾分鐘才能完成。
這些必要條件步驟完成後,您可以繼續測試下列案例。
建立 AKS 叢集
您可以在使用 Azure CLI 來部署 Azure Kubernetes Service 叢集中找到全域 Azure 指示。 此處的指示會反映在 Azure Stack Hub 上使用 AKS 的限制。 您可以使用 Azure CLI 來建立適用於 Linux 或 Windows 容器的 AKS 叢集。
建立資源群組:
az group create --name myResourceGroup --location <Azure Stack Hub location>
請確定您已備妥的服務主體識別碼具有訂用帳戶上的參與者權限,才能在其中建立叢集。
建立具有三個代理程式節點的 AKS 叢集。 提供下列參數的值,提供範例。 請執行:
az aks create \ --resource-group myResourceGroup \ --name myakscluster \ --dns-name-prefix myakscluster \ --nodepool-name mynodepool \ --admin-username azureuser \ --service-principal xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \ --node-count 3 \ --generate-ssh-keys \ --load-balancer-sku basic \ --vm-set-type VirtualMachineScaleSets \ --location <Azure Stack Hub location> \ --kubernetes-version 1.20.7
此作業的輸出將會是 json 格式,並且包含叢集的規格,其中包括產生的 SSH 公開金鑰、用於叢集中的其他屬性的完整網域名稱 (FQDN)。 請注意,此命令會輸出如下所示的文字,其中會將私密金鑰的位置醒目提示:
SSH key files '/home/azureuser/.ssh/id_rsa'
和'/home/azureuser/.ssh/id_rsa.pub'
已在\~/.ssh
下產生,以允許透過 SSH 存取 VM。 將這些金鑰儲存在安全的位置,以供您在對問題進行疑難排解時,使用 SSH 連線至 VM 所需。
連線至叢集
若要管理 Kubernetes 叢集,請使用 Kubernetes 命令列用戶端:kubectl。 若要在本機安裝 kubectl,請使用 az aks install-cli 命令 (您一開始可能需要使用 'sudo',以取得安裝其權限):
az aks install-cli
若要設定 kubectl 來連線到 Kubernetes 叢集,請使用
az aks get-credentials
命令。 此命令會下載憑證並設定 Kubernetes CLI 以供使用。az aks get-credentials --resource-group myResourceGroup --name myakscluster --admin
若要驗證對您叢集的連線,請使用 kubectl get 命令來傳回叢集節點的清單。
kubectl get nodes
調整叢集
另一個叢集管理工作正在調整叢集規模。 使用 az aks scale 命令建立叢集之後,您可以隨時調整叢集。 若要將叢集從一開始的三個節點調整為 4,請執行:
az aks scale --resource-group myResourceGroup --name myakscluster --node-count 4
成功調整叢集時,輸出會包含 "agentPoolProfiles",類似下列範例:
"agentPoolProfiles": [
{
"availabilityZones": null,
"count": 4,
"enableAutoScaling": null,
"enableNodePublicIp": false,
"maxCount": null,
"maxPods": 110,
"minCount": null,
"mode": "System",
"name": "mynodepool",
"nodeLabels": {},
"nodeTaints": null,
"orchestratorVersion": "1.20.7",
"osDiskSizeGb": 100,
"osType": "Linux",
"provisioningState": "Succeeded",
"scaleSetEvictionPolicy": null,
"scaleSetPriority": null,
"spotMaxPrice": null,
"tags": null,
"type": "VirtualMachineScaleSets",
"vmSize": " Standard_DS2_v2",
"vnetSubnetId": null
}
]
刪除叢集
執行先前的作業之後,您可以繼續刪除叢集。 請執行:
az aks delete --name myakscluster --resource-group myResourceGroup
使用自訂 VNET 建立 AKS 叢集
建立叢集以在使用者提供的網路中部署,是常見的案例。 規劃網路設定需要進行一些準備。 另請注意,使用 AKS 時,預設的網路外掛程式是 Azure CNI,而不是 AKS 引擎的 Kubenet。 透過 Azure CNI,每個 Pod 都會從子網路取得一個 IP 位址,而且可以直接存取 (而不需要路由表,Kubenet 就需要路由表)。 這些 IP 位址在您的網路空間中必須是唯一的,且必須規劃。 下列文章會逐步引導您完成規劃您的自訂 VNET 部署的程序。 您可以尋找適合您需求的各種網路設定,並進行測試。 針對初始測試,下列兩個步驟將會顯示基本程序:
遵循本文中的指示,使用 Azure CNI 規劃部署。 例如,您可以使用入口網站,在名為 "myTest-rg" 的資源群組中建立名為 "myAKSVnet" 的 VNet (IP 範圍 10.0.0.0/8) 且子網路 "myAKSSubnet" (IP 範圍 10.240.0.0/16)。 然後使用下一個步驟來建立叢集。
az network vnet create \ --resource-group myTest-rg \ --name myAKSVnet \ --address-prefixes 10.0.0.0/8 \ --subnet-name myAKSSubnet \ --subnet-prefix 10.240.0.0/16
請注意,Azure 文章中提供的叢集命令可在 Azure 上部署時正常運作,若要部署至 Azure Stack Hub,您需要指定額外的參數,如下列範例所示。 VNet 子網路識別碼看起來應該像 '/subscriptions/dfdfdff-5dfdf-dfdf-dfdf-dfdfdfdfdfd/resourceGroups/myTest-rg/providers/Microsoft.Network/virtualNetworks/myAKSVnet/subnets/myAKSSubnet':
az aks create \ --resource-group myTest-rg \ --name aksvnet \ --dns-name-prefix aksvnet \ --nodepool-name mynodepool \ --admin-username azureuser \ --service-principal xvxvxvxvx-ffff-ffff-xvxvxvx-8xbxbxbx8 \ --client-secret dccbcbcbcbcbcbcbcbbcbcbcbcbcbcbc-LNX \ --node-count 3 \ --generate-ssh-keys \ --load-balancer-sku basic \ --vm-set-type VirtualMachineScaleSets \ --network-plugin azure \ --vnet-subnet-id '<subnet-resource-id>' \ --skip-subnet-role-assignment \ --docker-bridge-address 172.17.0.1/16 \ --dns-service-ip 10.0.0.10 \ --location redmond
遵循「連線到叢集」一節中的指示,以連線到 Kubernetes 叢集,並部署您的應用程式。
一致性檢查
Azure 和 Azure Stack Hub 之間的一致性檢查
- 從以上測試的命令、從下方的「命令參考」區段,或從您自己的日常指令碼選取命令的組合。
- 將其套用至 Azure,並於稍後套用至 Azure Stack Hub。 記下不在預期的任何差異,並提供意見反應。