搭配 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 電腦的範例輸出:
從 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 ID
使用下列命令,將 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>
請確認您擁有具有參與者許可權的服務主體 ID,並已準備好在您的訂用帳戶中建立叢集。
建立三個工作節點的 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 叢集,您可以使用 kubectl、Kubernetes 命令行用戶端。 若要在本機安裝 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
使用自定義虛擬網路建立 AKS 叢集
建立要部署在使用者提供網路中的叢集是常見的案例。 規劃網路設定會進行一些準備。 此外,請注意,使用 AKS 時,預設的網路外掛程式是 Azure CNI,而不是像 AKS 引擎那樣預設為 Kubenet。
使用 Azure CNI 時,每個 Pod 都會從子網取得 IP 位址,而且可以直接存取(不需要使用 Kubenet 路由表)。 這些IP位址在整個網路空間中必須是唯一的,而且必須規劃。
下列文章將引導您了解規劃自訂虛擬網路部署過程。 您可以找到適用於您需求的各種網路組態,並加以測試。 針對初始測試,下列兩個步驟會顯示基本程式:
請遵循本文 中的指示, 使用 Azure CNI 來規劃部署。 例如,您可以使用入口網站,在名為「myTest-rg」的資源群組中,使用 IP 範圍 10.0.0.0/8 建立一個名為「myAKSVnet」的虛擬網絡及一個子網路「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,您必須指定額外的參數,如下列範例所示。 虛擬網絡子網標識符看起來應該像 '/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。 請注意任何不預期的差異,並提供 意見反應。