教學課程:建立 Azure Kubernetes Service (AKS) 叢集
本文內容
Kubernetes 提供適用於容器化應用程式的分散式系統。 Azure Kubernetes Service (AKS) 可讓您快速建立生產環境就緒的 Kubernetes 叢集。
在本教學課程 (3/7 部分) 中,您要在 AKS 部署 Kube 叢集。 您將學習如何:
部署可向 Azure Container Registry (ACR) 進行驗證的 AKS 叢集。
安裝 Kube CLI:kubectl
。
設定 kubectl
以連線至您的 AKS 叢集。
開始之前
在先前的教學課程中,您已建立容器映像,並將其上傳至 ACR 執行個體。 遵循教學課程 1:準備 AKS 的應用程式 (部分機器翻譯) 開始進行操作。
如果您使用 Azure CLI,本教學課程會要求您執行 Azure CLI 2.0.53 版或更新版本。 使用 az --version
檢查版本。 若要安裝或升級,請參閱安裝 Azure CLI 。
如果您使用 Azure PowerShell,此教學課程會要求您執行 Azure PowerShell 5.9.0 版或更新版本。 使用 Get-InstalledModule -Name Az
檢查版本。 若要安裝或升級,請參閱安裝 Azure PowerShell (部分機器翻譯)。
如果您使用 Azure Developer CLI,本教學課程會要求您執行 Azure Developer CLI 1.5.1 版或更新版本。 使用 azd version
檢查版本。 若要安裝或升級,請參閱安裝 Azure Developer CLI (部分機器翻譯)。
建立 Kubernetes 叢集
AKS 叢集可以使用 Kube 角色型存取控制 (Kube RBAC) ,讓您根據指派給使用者的角色定義對資源的存取權限。 如果使用者獲指派多個角色,則會合併權限。 這些權限可以只限於單一命名空間,或涵蓋整個叢集。
若要深入瞭解 AKS 和 Kube RBAC,請參閱在 AKS 使用 Kube RBAC 和 Microsoft Entra 身分識別來控制存取叢集資源 。
本教學課程需要 Azure CLI 2.0.53 版或更新版本。 使用 az --version
檢查版本。 若要安裝或升級,請參閱安裝 Azure CLI 。
本教學課程需要 Azure PowerShell 5.9.0 版或更新版本。 使用 Get-InstalledModule -Name Az
檢查版本。 若要安裝或升級,請參閱安裝 Azure PowerShell (部分機器翻譯)。
安裝 Kubernetes CLI
您可使用 Kube CLI 及 kubectl
連線至 Kube 叢集。 如果您使用 Azure Cloud Shell,則 kubectl
已安裝。 如果您在本機執行命令,可以使用 Azure CLI 或 Azure PowerShell 來安裝 kubectl
。
codespace 中的 azd
環境會自動下載 ./devcontainer/devcontainer.json
中找到的所有相依項目。 這包括 Kubernetes CLI 以及任何 Azure Container Registry (ACR) 映像。
建立 AKS 叢集
AKS 叢集可以使用 Kube 角色型存取控制 (Kube RBAC) ,讓您根據指派給使用者的角色定義對資源的存取權限。 使用者獲指派多個角色時會合併權限。 這些權限可以只限於單一命名空間,或涵蓋整個叢集。 如需詳細資訊,請參閱在 AKS 中使用 Kubernetes RBAC 和 Microsoft Entra ID 來控制叢集資源的存取 。
如需 AKS 資源限制和區域可用性的詳細資訊,請參閱 AKS 的配額、虛擬機器大小限制和區域可用性 。
注意
若要確保叢集能夠可靠地運作,您應該執行至少兩個節點。
為了允許 AKS 叢集與其他 Azure 資源互動,Azure 平台會自動建立叢集身分識別。 就本範例而言,叢集身分識別已獲得提取映像的權限 ,可從先前教學課程中建立的 ACR 執行個體中提取映像。 若要成功執行命令,您必須擁有 Azure 訂用帳戶的擁有者 或 Azure 帳戶管理員 角色。
使用 az aks create
命令建立 AKS 叢集。 下列範例會在名為 myResourceGroup 的資源群組中建立名為 myAKSCluster 的叢集。 在先前的教學課程 中,我們已在 eastus 區域建立此資源群組。 我們會繼續使用在上一個教學課程 中設定的環境變數 $ACRNAME
。 如果您尚未設定此環境變數,請立即將其設為先前使用的相同值。
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 2 \
--generate-ssh-keys \
--attach-acr $ACRNAME
注意
如果您已經產生 SSH 金鑰,可能會遇到類似 linuxProfile.ssh.publicKeys.keyData is invalid
的錯誤。 若要繼續,請重試命令而不使用 --generate-ssh-keys
參數。
若要避免需要擁有者 或 Azure 帳戶管理員 角色,您也可以手動設定服務主體以從 ACR 提取映像。 如需詳細資訊,請參閱使用服務主體進行 ACR 驗證 或使用提取密碼從 Kubernetes 進行驗證 。 或者,您也可以使用受控識別 而不是服務主體,以方便管理。
為了允許 AKS 叢集與其他 Azure 資源互動,Azure 平台會自動建立叢集身分識別。 就本範例而言,叢集身分識別已獲得提取映像的權限 ,可從先前教學課程中建立的 ACR 執行個體中提取映像。 若要成功執行命令,您必須擁有 Azure 訂用帳戶的擁有者 或 Azure 帳戶管理員 角色。
使用 New-AzAksCluster
Cmdlet 建立 AKS 叢集。 下列範例會在名為 myResourceGroup 的資源群組中建立名為 myAKSCluster 的叢集。 在先前的教學課程 中,我們已在 eastus 區域建立此資源群組。
New-AzAksCluster -ResourceGroupName myResourceGroup -Name myAKSCluster -NodeCount 2 -GenerateSshKey -AcrNameToAttach $ACRNAME
注意
如果您已經產生 SSH 金鑰,可能會遇到類似 linuxProfile.ssh.publicKeys.keyData is invalid
的錯誤。 若要繼續,請重試命令而不使用 -GenerateSshKey
參數。
若要避免需要擁有者 或 Azure 帳戶管理員 角色,您也可以手動設定服務主體以從 ACR 提取映像。 如需詳細資訊,請參閱使用服務主體進行 ACR 驗證 或使用提取密碼從 Kubernetes 進行驗證 。 或者,您也可以使用受控識別 而不是服務主體,以方便管理。
azd
使用 azd up
命令,將叢集的部署與應用程式本身封裝在一起。 下一個教學課程會介紹此命令。
使用 kubectl 連線至叢集
使用 az aks get-credentials
命令,設定 kubectl
連線到 Kubernetes 叢集。 下列範例會為 myResourceGroup 中名為 myAKSCluster 的 AKS 叢集取得認證。
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
請使用 kubectl get nodes
命令驗證對您叢集的連線,這會傳回叢集節點清單。
kubectl get nodes
下列範例輸出顯示叢集節點清單。
NAME STATUS ROLES AGE VERSION
aks-nodepool1-19366578-vmss000000 Ready agent 47h v1.28.9
aks-nodepool1-19366578-vmss000001 Ready agent 47h v1.28.9
使用 Import-AzAksCredential
Cmdlet 設定 kubectl
連線到 Kube 叢集。 下列範例會為 myResourceGroup 中名為 myAKSCluster 的 AKS 叢集取得認證。
Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
請使用 kubectl get nodes
命令驗證對您叢集的連線,這會傳回叢集節點清單。
kubectl get nodes
下列範例輸出顯示叢集節點清單。
NAME STATUS ROLES AGE VERSION
aks-nodepool1-19366578-vmss000000 Ready agent 47h v1.28.9
aks-nodepool1-19366578-vmss000001 Ready agent 47h v1.28.9
使用 azd auth login
命令來設定叢集驗證。
azd auth login
請遵循驗證方法的指示進行操作。
使用 kubectl get nodes
命令確認叢集的連線。
kubectl get nodes
下列範例輸出顯示叢集節點清單
NAME STATUS ROLES AGE VERSION
aks-nodepool1-19366578-vmss000000 Ready agent 47h v1.28.9
aks-nodepool1-19366578-vmss000001 Ready agent 47h v1.28.9
azd auth 因應措施
此因應措施會要求您安裝 Azure CLI 。
開啟終端機視窗,並使用 az login
命令利用 Azure CLI 登入,並將 --scope
參數設定為 https://graph.microsoft.com/.default
。
az login --scope https://graph.microsoft.com/.default
您應該重新導向至新索引標籤中的驗證頁面,以建立瀏覽器存取權杖,如下列範例中所示:
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
嘗試使用 azd auth login
登入之後,複製您所收到網頁的 localhost URL。
在新終端機視窗中,使用下列 curl
要求進行登入。 請務必將 <localhost>
預留位置取代為您在上一個步驟中複製的 localhost URL。
curl <localhost>
成功的登入會輸出 HTML 網頁,如下列範例所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="refresh" content="60;url=https://docs.microsoft.com/cli/azure/">
<title>Login successfully</title>
<style>
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
code {
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
display: inline-block;
background-color: rgb(242, 242, 242);
padding: 12px 16px;
margin: 8px 0px;
}
</style>
</head>
<body>
<h3>You have logged into Microsoft Azure!</h3>
<p>You can close this window, or we will redirect you to the <a href="https://docs.microsoft.com/cli/azure/">Azure CLI documentation</a> in 1 minute.</p>
<h3>Announcements</h3>
<p>[Windows only] Azure CLI is collecting feedback on using the <a href="https://learn.microsoft.com/windows/uwp/security/web-account-manager">Web Account Manager</a> (WAM) broker for the login experience.</p>
<p>You may opt-in to use WAM by running the following commands:</p>
<code>
az config set core.allow_broker=true<br>
az account clear<br>
az login
</code>
</body>
</html>
關閉目前的終端機,並開啟原始終端機。 您應該會看到訂用帳戶的 JSON 清單。
複製您所要使用訂用帳戶的 id
欄位。
使用 az account set
(部分機器翻譯) 命令來設定您的訂用帳戶。
az account set --subscription <subscription_id>
下一步
在本教學課程中,您已將 Kube 叢集部署在 AKS 中,並設定 kubectl
連線至叢集。 您已了解如何︰
部署可向 ACR 進行驗證的 AKS 叢集。
安裝 Kube CLI:kubectl
。
設定 kubectl
以連線至您的 AKS 叢集。
下一個教學課程將帶您瞭解如何將應用程式部署至叢集。