教學課程 - 建立 Azure Kubernetes Service (AKS) 叢集
本文內容
Kubernetes 提供適用於容器化應用程式的分散式系統。 使用 Azure Kubernetes Service (AKS),您可以快速建立生產就緒 Kubernetes 叢集。
在本教學課程中,您會在 AKS 中部署 Kubernetes 叢集的第三部分。 您將學習如何:
部署可向 Azure Container Registry (ACR) 進行驗證的 AKS 叢集。
安裝 Kubernetes 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 開發人員 CLI,本教學課程會要求您執行 Azure 開發人員 CLI 1.5.1 版或更新版本。 使用 azd version
檢查您的版本。 若要安裝或升級,請參閱 安裝 Azure 開發人員 CLI 。
建立 Kubernetes 叢集
AKS 叢集可以使用 Kubernetes 角色型存取控制 (Kubernetes RBAC), 其可讓您根據指派給使用者的角色定義對資源的存取權。 如果用戶獲指派多個角色,則會合併許可權。 許可權可以限定為單一命名空間或整個叢集。
若要深入瞭解 AKS 和 Kubernetes RBAC,請參閱 使用 AKS 中的 Kubernetes RBAC 和 Microsoft Entra 身分識別來控制叢集資源的存取。
本教學課程需要 Azure CLI 2.0.53 版或更新版本。 使用 az --version
檢查您的版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI 。
本教學課程需要 Azure PowerShell 5.9.0 版或更新版本。 使用 Get-InstalledModule -Name Az
檢查您的版本。 若要安裝或升級,請參閱 安裝 Azure PowerShell 。
本教學課程需要 Azure 開發人員 CLI 1.5.1 版或更新版本。 使用 azd version
檢查您的版本。 若要安裝或升級,請參閱 安裝 Azure 開發人員 CLI 。
安裝 Kubernetes CLI
您可以使用 Kubernetes CLI 來 kubectl
連線到 Kubernetes 叢集。 如果您使用 Azure Cloud Shell,則 kubectl
已安裝。 如果您在本機執行命令,您可以使用 Azure CLI 或 Azure PowerShell 來安裝 kubectl
。
azd
程式代碼空間中的環境會自動下載 中找到 ./devcontainer/devcontainer.json
的所有相依性。 這包括 Kubernetes CLI 以及任何 Azure Container Registry (ACR) 映射。
建立 AKS 叢集
AKS 叢集可以使用 Kubernetes 角色型存取控制 (Kubernetes RBAC), 其可讓您根據指派給使用者的角色定義對資源的存取權。 當用戶獲派多個角色時,許可權會合併。 許可權可以限定為單一命名空間或整個叢集。 如需詳細資訊,請參閱 使用 AKS 中的 Kubernetes RBAC 和 Microsoft Entra ID 來控制叢集資源的存取。
如需 AKS 資源限制和區域可用性的相關信息,請參閱 AKS 中的配額、虛擬機大小限制和區域可用性。
注意
為了確保叢集能夠可靠地運作,您應該至少執行兩個節點。
為了允許 AKS 叢集與其他 Azure 資源互動,Azure 平台會自動建立叢集身分識別。 在此範例中,叢集身分 識別有權從您在上一個教學課程中建立的 ACR 實例提取映像 。 若要成功執行命令,您必須在 Azure 訂用帳戶中擁有 擁有者 或 Azure 帳戶管理員 角色。
使用 az aks create
命令建立 AKS 叢集。 下列範例會在名為 myResourceGroup 的資源群組中建立名為 myAKSCluster 的叢集。 此資源群組是在 eastus 區域中的上一個教學課程 中建立的。
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-vmss000002 Ready agent 47h v1.25.6
aks-nodepool1-19366578-vmss000003 Ready agent 47h v1.25.6
設定 kubectl
以使用 Import-AzAksCredential
Cmdlet 連線到 Kubernetes 叢集。 下列範例會取得 myResourceGroup 中名為 myAKSCluster 的 AKS 叢集認證。
Import-AzAksCredential -ResourceGroupName myResourceGroup -Name myAKSCluster
使用 kubectl get nodes
命令確認叢集的連線,這會傳回叢集節點的清單。
kubectl get nodes
下列範例輸出顯示叢集節點的清單。
NAME STATUS ROLES AGE VERSION
aks-nodepool1-19366578-vmss000002 Ready agent 47h v1.25.6
aks-nodepool1-19366578-vmss000003 Ready agent 47h v1.25.6
使用 命令設定叢集的 azd auth login
驗證。
azd auth login
請遵循驗證方法的指示。
使用 命令確認叢集的 kubectl get nodes
連線。
kubectl get nodes
下列範例輸出顯示叢集節點的清單
NAME STATUS ROLES AGE VERSION
aks-nodepool1-19366578-vmss000002 Ready agent 47h v1.25.6
aks-nodepool1-19366578-vmss000003 Ready agent 47h v1.25.6
azd auth 因應措施
此因應措施會要求您 安裝 Azure CLI 。
開啟終端機視窗,並使用 az login
將 參數設定為 https://graph.microsoft.com/.default
的 命令--scope
,使用 Azure CLI 登入。
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>
佔位元取代為您在上一個步驟中複製的localhostURL。
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>
下一步
在本教學課程中,您已在 AKS 中部署 Kubernetes 叢集,並設定 kubectl
為連線到叢集。 您已了解如何︰
部署可向 ACR 進行驗證的 AKS 叢集。
安裝 Kubernetes CLI, kubectl
。
設定 kubectl
以連線到您的 AKS 叢集。
在下一個教學課程中,您將瞭解如何將應用程式部署至叢集。