在 Azure 平台上佈署 Kubernetes 叢集,可以透過 Azure Kubernetes Service (AKS) 簡化流程。首先,需要安裝及組態 Azure CLI,或使用 Azure Cloud Shell。接著,建立資源群組和 AKS 叢集,並使用 kubectl 連線及佈署應用程式。AKS 提供圖形化介面管理叢集資源,包含名稱空間、工作負載、服務、儲存等,並可透過 Insights 監控叢集效能。相較於其他雲端供應商,AKS 的叢集管理在非生產環境下免費,僅需支付計算資源費用,更具成本效益。
在 Microsoft Azure 上使用 Azure Kubernetes Service 佈署 Kubernetes 叢集
安裝 Azure CLI
要在 Microsoft Azure 上使用 Azure Kubernetes Service (AKS),首先需要安裝 Azure CLI。Azure CLI 是一個命令列工具,讓你可以與 Azure 服務互動。以下是安裝 Azure CLI 的步驟:
在 macOS 上安裝
在 macOS 上,可以使用 Homebrew 安裝 Azure CLI。執行以下命令:
$ brew install azure-cli
安裝完成後,執行以下命令檢查版本:
$ az --version
這將輸出 Azure CLI 的版本資訊。
在 Linux 上安裝
Microsoft 提供了一個安裝指令碼,支援大多數常見的 Linux 發行版。執行以下命令:
$ curl -L https://aka.ms/InstallAzureCli | bash
這將下載、安裝並組態 Azure CLI。安裝完成後,需要重新啟動終端機會話,或執行以下命令:
$ source ~/.profile
然後,執行以下命令檢查版本:
$ az --version
在 Windows 上安裝
在 Windows 上,可以透過多種方式安裝 Azure CLI。可以下載安裝程式並執行,也可以透過 PowerShell 命令或 Chocolatey 套件管理器安裝。
- 下載安裝程式:從 https://aka.ms/installazurecliwindows 下載安裝程式並執行。
- 使用 PowerShell 命令:
$ProgressPreference = ‘SilentlyContinue’; Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList ‘/I AzureCLI.msi /quiet’; Remove-Item .\AzureCLI.msi
* 使用 Chocolatey 套件管理器:
```bash
$ choco install azure-cli
安裝完成後,執行以下命令檢查版本:
$ az --version
組態 Azure CLI
安裝完成後,需要組態 Azure CLI。執行以下命令:
$ az login
這將開啟預設瀏覽器,要求你登入。登入後,Azure CLI 將組態為與你的 Azure 帳戶關聯。
如果遇到問題或在無圖形介面的環境中,可以使用以下命令取得登入 URL 和驗證碼:
$ az login --use-device-code
登入後,可以執行以下命令檢視帳戶資訊:
$ az account show
存取 Azure Cloud Shell
如果無法在本機安裝 Azure CLI,可以使用 Azure Cloud Shell。Azure Cloud Shell 是一個內建於 Azure 入口網站的終端機,提供了一個預先組態好的環境。
要存取 Azure Cloud Shell,請開啟 https://portal.azure.com/ 並登入。然後,點選頂部功能表列中的 Cloud Shell 圖示。
首次啟動 Cloud Shell 時,需要選擇儲存體選項。選擇「Mount storage account」並選擇你的訂閱。
設定 Cloud Shell 儲存體
- 選擇「Mount storage account」。
- 選擇你的 Azure 訂閱。
- 點選「Apply」。
- 選擇「We will create a storage account for you」。
Cloud Shell 將會在約一分鐘後開啟,並提供一個命令提示字元。
在 Cloud Shell 中,可以執行與本機 Azure CLI 安裝相同的命令,例如:
$ az --version
啟動 AKS 叢集
在完成所有先決條件後,可以啟動 AKS 叢集。需要執行兩個命令:
- 建立 Azure 資源群組:
$ az group create –name rg-myfirstakscluster-eus –location eastus -o table
這將建立一個名為 `rg-myfirstakscluster-eus` 的資源群組,位於 `eastus` 區域。
#### 建立資源群組的詳細過程
此命令建立了一個資源群組,這是 Azure 中的一個基本組織單位,用於管理相關資源。在此案例中,我們建立了一個名為 `rg-myfirstakscluster-eus` 的資源群組,並將其放置在 `eastus` 區域。 `-o table` 引數指定了輸出格式,使結果以表格形式顯示,而不是預設的 JSON 格式。
```bash
#### 詳細解說:
1. `$ az group create`:建立資源群組的命令。
2. `--name rg-myfirstakscluster-eus`:指定資源群組的名稱。
3. `--location eastus`:指定資源群組的位置。
4. `-o table`:指定輸出格式為表格。
後續步驟
建立資源群組後,便可以繼續建立 AKS 叢集。這涉及多個步驟,包括設定網路、建立叢集等。在後續章節中,將會詳細介紹這些步驟。
在 Azure Kubernetes Service (AKS) 上佈署 Kubernetes 叢集
建立資源群組
在 Azure 上建立 Kubernetes 叢集的第一步是建立一個資源群組。資源群組是一個邏輯容器,用於將相關的 Azure 資源分組。資源群組內的服務可以繼承諸如角色型存取控制、鎖定和資源啟動區域等設定。
要建立資源群組,可以使用以下命令:
$ az group create --name rg-myfirstakscluster-eus --location eastus -o table
此命令建立一個名為 rg-myfirstakscluster-eus 的資源群組,位於 eastus 區域。
內容解密:
--name:指定資源群組的名稱。--location:指定資源群組的位置。-o table:指定輸出格式為表格。
建立 AKS 叢集
建立資源群組後,可以使用以下命令建立 AKS 叢集:
$ az aks create --resource-group rg-myfirstakscluster-eus --name aks-myfirstakscluster-eus --node-count 2 --enable-addons monitoring --generate-ssh-keys -o yaml
此命令建立一個名為 aks-myfirstakscluster-eus 的 AKS 叢集,包含 2 個節點,並啟用監控附加元件。
內容解密:
--resource-group:指定資源群組的名稱。--name:指定 AKS 叢集的名稱。--node-count:指定節點的數量。--enable-addons:啟用監控附加元件。--generate-ssh-keys:產生 SSH 公鑰和私鑰檔案。-o yaml:指定輸出格式為 YAML。
組態 kubectl
建立 AKS 叢集後,需要組態本地的 kubectl 使用者端以與叢集互動。可以使用以下命令:
$ az aks get-credentials --resource-group rg-myfirstakscluster-eus --name aks-myfirstakscluster-eus
此命令下載叢集憑證並組態 kubectl。
內容解密:
--resource-group:指定資源群組的名稱。--name:指定 AKS 叢集的名稱。
佈署工作負載
可以使用以下命令佈署範例 Guestbook 工作負載:
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-leader-deployment.yaml
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-leader-service.yaml
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-follower-deployment.yaml
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/redis-follower-service.yaml
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/frontend-deployment.yaml
$ kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/kubernetes-engine-samples/main/quickstarts/guestbook/frontend-service.yaml
這些命令佈署 Redis leader、Redis follower 和前端服務。
內容解密:
kubectl apply:將組態檔案應用於叢集。-f:指定組態檔案的 URL。
探索 Azure 入口網站
可以登入 Azure 入口網站以檢視 Kubernetes 服務。輸入 Kubernetes 在搜尋框中,然後點選 Kubernetes services 以檢視訂閱中的 Kubernetes 服務。
此圖示的詳細說明:
- 建立資源群組:首先,需要建立一個資源群組來容納相關的 Azure 資源。
- 建立 AKS 叢集:接下來,在所建立的資源群組中建立 AKS 叢集。
- 組態 kubectl:建立叢集後,組態本地的
kubectl使用者端以與叢集互動。 - 佈署工作負載:使用
kubectl佈署所需的應用程式或工作負載。 - 探索 Azure 入口網站:最後,可以透過 Azure 入口網站檢視和管理所佈署的 Kubernetes 服務。
Azure Kubernetes Service(AKS)叢集管理深度解析
Azure Kubernetes Service(AKS)提供了一個強大的管理介面,用於監控和操作Kubernetes叢集。本章節將探討AKS的叢集管理功能,涵蓋從工作負載到叢集設定的各個方面。
叢集概覽頁面:操作起點
點選aks-myfirstakscluster-eus將進入叢集概覽頁面,這是檢視工作負載和叢集資訊的起點。
Kubernetes 資源管理
Namespaces(名稱空間)管理
- 可檢視叢集中所有活躍的名稱空間
- 預設名稱空間包含未自定義名稱空間的工作負載
- 系統名稱空間(如
kube-node-lease、kube-public和kube-system)由叢集管理,不建議修改
在預設名稱空間中,可以:
- 編輯定義名稱空間的YAML檔案
- 檢視事件日誌
- 組態服務網格(若已佈署)
Workloads(工作負載)管理
此部分可檢視和管理工作負載相關資訊:
Deployments(佈署):檢視和管理佈署狀態
- 可篩選特定名稱空間的工作負載
- 點選特定佈署可檢視詳細資訊,包括YAML定義和事件日誌
- 提供Insights功能,用於深入分析佈署狀態
Pods(容器組):列出組成工作負載的所有容器組
- 顯示容器組的IP位址和所在節點
- 可檢視每個容器組的詳細資訊、YAML定義和事件
Replica Sets(副本集):顯示工作負載相關的副本集狀態
- 可檢視每個副本集的詳細資訊
Jobs(作業)和Cron Jobs(定時作業):管理叢集中的一次性任務和定時任務
Services 和 Ingresses 管理
此部分可檢視和管理叢集中所有已佈署的服務:
- 顯示服務的叢集IP和外部IP組態
- 可深入檢視每個服務的詳細組態
Storage(儲存)管理
若叢集中組態了持久化儲存,可在此檢視和管理相關資訊。
Configuration(組態)管理
可檢視和編輯叢集中的ConfigMaps和Secrets。
Events(事件)監控
提供叢集的即時事件監控,幫助快速定位和排查問題。
Run Command(執行命令)
允許直接在Azure門戶中執行kubectl命令,無需開啟Cloud Shell或本地組態kubectl。
叢集設定
Node Pools(節點池)管理
- 可檢視節點池詳情並升級Kubernetes版本(需先升級控制平面)
- 可調整節點池規模或新增節點池
- 可檢視各節點的詳細資訊
Cluster Configuration(叢集組態)
提供控制平面的Kubernetes版本升級功能。
重點解析
- AKS提供了全面的叢集管理功能,從工作負載到節點管理的全方位覆寫。
- 直接在Azure門戶中即可完成大部分管理任務,無需依賴外部工具。
- 即時事件監控和日誌檢視功能大大簡化了問題排查流程。
最佳實踐建議
- 定期檢查叢集事件日誌,及時發現潛在問題。
- 合理規劃名稱空間,隔離不同應用或環境。
- 利用Insights功能深入分析工作負載狀態。
- 定期檢查和最佳化節點池組態,確保資源利用率。
本章節全面介紹了AKS的叢集管理功能,為管理和維護Kubernetes叢集提供了清晰的操作。透過合理利用這些功能,可以有效提升叢集的管理效率和維運水準。
Azure Kubernetes Service(AKS)的管理和監控
AKS 的設定與管理
在 Azure 入口網站中,AKS 提供了多項設定和管理功能。這些功能涵蓋了叢集的各個方面,從節點設定到網路組態,再到擴充套件和備份。
叢集升級與相容性
AKS 的控制平面提供最多三個版本的向後相容性,這意味著通常只能在目前版本的三個版本範圍內進行升級。
應用程式擴充套件
可以啟用 Kubernetes Event-Driven Autoscaler(KEDA),根據外部事件動態調整工作負載。目前透過 Azure 入口網站組態服務時,支援的擴充套件事件來源有限,包括 Azure Service Bus、Cron、記憶體和 CPU。
網路設定
在網路設定部分,可以檢視和管理叢集的網路組態。
擴充套件和應用程式
作為 Azure Marketplace 的一部分,微軟提供了可以在 AKS 叢集中佈署的第一方和第三方應用程式。在此部分,可以管理這些佈署。
備份
Azure 原生備份服務現在支援備份 Kubernetes 工作負載和應用程式資料,所有這些都可以從這裡進行管理。
Insights(監控)
在叢集檢視的監控選單中,可以找到 Insights 選項。啟用監控附加元件後,微軟的原生監控會將資料從資源傳送到 Azure Log Analytics 服務。然後,微軟將這些資訊以洞察的形式呈現給使用者。
Insights 頁面包含多個標籤:
- Cluster:顯示整個叢集的 CPU 和記憶體利用率,以及節點和 Pod 數量。
- Reports:提供有關節點監控(效能)、資源監控(可用性)、計費和網路的預先編寫報告。
- Nodes:提供節點概覽。
- Controllers:顯示叢集中啟動的控制器的詳細資訊,例如副本集和 DaemonSet。
- Containers:顯示在已佈署的 Pod 上執行的所有容器的詳細資訊。
刪除 AKS 叢集
要刪除叢集,可以使用 Azure CLI 執行以下命令:
$ az aks delete --resource-group rg-myfirstakscluster-eus --name aks-myfirstakscluster-eus
此命令僅刪除叢集,不刪除資源群組。要刪除資源群組,請執行:
$ az group delete --name rg-myfirstakscluster-eus
成本分析
與其他兩個雲端服務不同,AKS 對非生產工作負載的叢集管理是免費的,使用者只需支付計算資源的費用。
不同組態下的成本比較
- 使用兩個 Standard_DS2_v2 例項,每月約 $213。
- 如果選擇標準叢集管理,每月約 $286。
- 使用 Standard_DS3_v2 例項,每月約 $140(非生產選項)。
三大公有雲端服務比較
| 特性 | Google Kubernetes Engine (GKE) | Amazon Elastic Kubernetes Service (EKS) | Microsoft AKS |
|---|---|---|---|
| Kubernetes 版本支援 | 最新版本,頻繁更新 | 版本支援稍微落後 | 最新版本,頻繁更新 |
內容解密:
此表格比較了三大公有雲端服務在 Kubernetes 版本支援方面的差異。GKE 和 AKS 都提供最新版本的 Kubernetes 和頻繁的更新,而 EKS 的版本支援稍微落後。這對於需要最新 Kubernetes 功能的使用者來說是一個重要的考慮因素。