簡述 Azure Kubernetes Service on Azure Stack HCI



前言

有在關心 Azure Stack HCI 的朋友,應該知道今年 Microsoft Ignite 2020 最大的消息之一,便是 AKS (Azure Kubernetes Service) 支援運作在 Azure Stack HCI 平台上。






AKS on Azure Stack HCI 測試環境

雖然,手邊還沒有測試環境,但是參考官方的測試環境有助於後續建立測試環境。簡單來說,只要 2-Nodes Azure Stack HCI (每台 4 Cores / 64 GB Memory / 4 x SSD Drive),搭配一台 Windows 10 負責 WAC (Windows Admin Center),另一台為 Domain Controller 提供 DNS / DHCP 即可。

圖、AKS on Azure Stack HCI 測試環境示意圖



部署 AKS (Azure Kubernetes Service)

在正式部署 AKS on Azure Stack HCI 之前,必須先部署 AKS (Azure Kubernetes Service) 才行。簡單來說,因為 Azure Stack HCI 運作在「地端」(On-Premises) 環境中,所以必須透過這個部署動作建立「控制平面」(Control Plane)

值得一提的是,這個動作只要透過 WAX (Windows Admin Center) 即可輕鬆達成。只要安裝 WAC Extension 即可在 Azure Stack HCI Cluster 中選擇「Azure Kubernetes Service」項目,然後提供管理者帳號和密碼、CSV (Cluster Shared Volume)、IP Range (DHCP 提供),然後等待約 30 分鐘的安裝和組態設定時間,即可完成。

圖、部署 Azure Kubernetes Service

當 AKS 部署作業完成後,將會同時發現自動部署「2 台 VM 虛擬主機」,便是負責 AKS 控制平面的部份。此外,當你查看剛才 AKS 部署作業所產生的 VM 虛擬主機時,你會發現它的名稱為「Common Base Linux – Mariner」,它是一個開放源始碼的 Linux 發行版本,詳細資訊請參考 GitHub - microsoft/CBL-Mariner: Linux OS for Azure 1P services and edge appliances

圖、部署 AKS 後發現 Common Base Linux - Mariner 虛擬主機



Azure Stack HCI 儲存架構

在 AKS on Azure Stack HCI 運作架構中最令人感到好奇的,就是 Azure Stack HCI 如何將儲存資源,轉換成「Persistent Storage」給 AKS 以及屆時的 Pod / Container 使用。

在開始說明 Azure Stack HCI 儲存資源轉換成 Persistent Storage 之前,先說明一下 Azure Stack HCI 儲存架構,以便照顧不熟悉 Azure Stack HCI 儲存架構的朋友:

1. 採用通過 Azure Stack HCI 硬體認證的 x86 伺服器,建立 Azure Stack HCI 叢集。
2. Azure Stack HCI 節點伺服器之間,透過 10Gb/25Gb/40Gb/50Gb/100Gb 等高速乙太網互相連接,以便高速交換儲存資源。
3. 每一台 Azure Stack HCI 節點伺服器,都將貢獻本地端的 NVMe/SSD/HDD 儲存裝置器,匯整為 S2D (Storage Spaces Direct) 的儲存資源中。
4. 在匯整的 S2D (Storage Spaces Direct) 儲存資源中,依據需求切割出所需要的「Volume」,包括 Volume 的容錯等級和儲存空間……等。
5. 在 Azure Stack HCI 叢集中,運作 VM 虛擬主機並將 VHDX 虛擬硬碟,儲存於剛才所建立的 S2D Volume 當中。
6. 上層的 VM 虛擬主機,除了可以隨意存取儲存資源之外,也可以在 Azure Stack HCI 叢集內節點伺服器之間進行各種資源的線上遷移。

圖、Azure Stack HCI 儲存架構

7. 在 Azure Stack HCI 叢集中,運作的 Kubernetes Controller 接收儲存請求,例如,調度部署新的 Pod。
8. Kubernetes Controller 將儲存請求,轉送到 Kubernetes Worker Node 當中的「msvhd CSI」,這個 msvhd CSI 在剛才部署 AKS 時便會自動進行安裝。
9. 「msvhd CSI」向 Azure Stack HCI 叢集中所有節點主機送出請求。
10.  Azure Stack HCI 節點主機建立 VHDX 虛擬硬碟,並且附加到剛才提出請求的 Kubernetes Worker Node。
11. Kubernetes Worker Node 感知到附加的 VHDX 虛擬硬碟,然後進行儲存裝置格式化的動作,倘若是 Linux Worker Node 便採用 EXT4 檔案系統,而 Windows Worker Node 則採用 NTFS 檔案系統。
12. Kubernetes Worker Node 將得到的儲存資源,掛載到 Pod 以便內部的容器得以使用儲存資源。

圖、Azure Stack HCI 儲存架構



參考資源