Azure Arc 所啟用 AKS 的 Kubernetes 叢集架構和工作負載
適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS
Azure Local 和 Windows Server 上的 Azure Kubernetes Service (AKS)是 Azure Local 所提供的企業級 Kubernetes 容器平臺。 它包含Microsoft支援的核心 Kubernetes、用途建置的 Windows 容器主機,以及Microsoft支援的 Linux 容器主機,目標是擁有簡單的部署和生命週期管理體驗。
本文介紹核心 Kubernetes 基礎結構元件,例如控制平面、節點和節點集區。 Pod、部署和集合等工作負載資源也會引進,以及如何將資源分組為命名空間。
Kubernetes 叢集架構
Kubernetes 是 Azure Arc 所啟用 AKS 的核心元件。AKS 會使用一組預先定義的組態,有效地部署 Kubernetes 叢集,並考慮到延展性。
部署作業會建立多個 Linux 或 Windows 虛擬機,並將其聯結在一起以建立 Kubernetes 叢集。
注意
為了協助改善系統的可靠性,如果您在叢集中執行多個叢集共用磁碟區(CSV),則根據預設,虛擬機數據會自動分散到叢集中所有可用的 CSV。 這可確保應用程式在發生 CSV 中斷時倖存下來。 這隻適用於新的安裝(而非升級)。
已部署的系統已準備好接收標準 Kubernetes 工作負載、調整這些工作負載,或甚至視需要相應增加和減少叢集數目。
Azure Kubernetes Service 叢集具有下列元件:
- 管理叢集 (也稱為 AKS 主機)提供用於部署和管理一或多個工作負載叢集的核心協調流程機制和介面。
- 工作負載叢集 (也稱為目標叢集)是容器化應用程式部署的位置。
管理 Arc 啟用的 AKS
您可以使用下列管理選項來管理 AKS:
- Windows Admin Center 為 Kubernetes 操作員提供直覺式 UI,以管理叢集的生命週期。
- PowerShell 模組可讓您輕鬆地下載、設定及部署 AKS。 PowerShell 模組也支援部署和設定其他工作負載叢集,以及重新設定現有的工作負載叢集。
管理叢集
當您建立 Kubernetes 叢集時,系統會自動建立並設定管理叢集。 此管理叢集負責布建和管理工作負載執行所在的工作負載叢集。 管理叢集包含下列核心 Kubernetes 元件:
- API 伺服器:API 伺服器是基礎 Kubernetes API 公開的方式。 此元件提供管理工具的互動,例如 Windows Admin Center、PowerShell 模組或
kubectl
。 - 負載平衡器:負載平衡器是單一專用Linux VM,具有管理叢集 API 伺服器的負載平衡規則。
工作負載叢集
工作負載叢集是使用Linux VM執行 Kubernetes 控制平面元件和Linux背景工作節點的高可用性部署。 Windows Server Core 型 VM 用於建立 Windows 背景工作角色節點。 一個管理叢集可以管理一或多個工作負載叢集。
工作負載叢集元件
工作負載叢集有許多元件,如下列各節所述。
控制平面
- API 伺服器:API 伺服器允許與 Kubernetes API 互動。 此元件提供管理工具的互動,例如 Windows Admin Center、PowerShell 模組或
kubectl
。 - Etcd:Etcd 是分散式索引鍵/值存放區,可儲存叢集生命週期管理所需的數據。 它會儲存控制平面狀態。
負載平衡器
負載平衡器是執行Linux和HAProxy + KeepAlive的虛擬機,可為管理叢集所部署的工作負載叢集提供負載平衡服務。 針對每個工作負載叢集,AKS 至少會新增一部負載平衡器虛擬機。 在工作負載叢集上建立的任何類型 LoadBalancer
Kubernetes 服務最終會在 VM 中建立負載平衡規則。
背景工作節點
若要執行應用程式和支援的服務,您必須要有 Kubernetes 節點。 AKS 工作負載叢集有一或多個 背景工作節點。 背景工作角色節點作為虛擬機器 (VM) 執行 Kube 節點元件,並裝載構成應用程式工作負載的 Pod 和服務。
有核心 Kubernetes 工作負載元件可以部署在 AKS 工作負載叢集上,例如 Pod 和部署。
Pod
Kubernetes 會使用 Pod 來執行您應用程式的執行個體。 Pod 代表單一的應用程式執行個體。 一般而言,Pod 具有與容器的 1:1 對應,不過 Pod 可以包含多個容器的進階案例。 會在相同的節點上同時安排這些多容器 pod 的排程,並允許容器共用相關的資源。 如需詳細資訊,請參閱 Kubernetes Pod (英文) 和 Kubernetes Pod 生命週期 (英文)。
部署
部署代表由 Kubernetes 部署控制器管理的一或多個相同 Pod。 部署會定義要建立的 複 本數目(Pods),而 Kubernetes 排程器可確保如果 Pod 或節點遇到問題,則會在狀況良好的節點上排程其他 Pod。 如需詳細資訊,請參閱 Kubernetes 部署。
StatefulSet 和 Daemonset
部署控制器會使用 Kubernetes 排程器,在任何具有可用資源的可用節點上執行指定數目的複本。 使用部署的方法可能就足以用於無狀態應用程式,但不適用於需要持續性命名慣例或記憶體的應用程式。 對於需要複本存在於叢集內每個節點(或選取節點)的應用程式,部署控制器不會查看複本如何分散到節點。
- StatefulSet:StatefulSet 類似於建立和管理一或多個相同 Pod 的部署。 StatefulSet 中的複本遵循部署、調整、升級和終止的正常、循序方法。 使用 StatefulSet (複本已重新排程)命名慣例、網路名稱和記憶體會保存。 StatefulSet 中的複本會排程並跨 Kubernetes 叢集中的任何可用節點執行。 如果您需要確保集合中至少有一個 Pod 在節點上執行,您可以改用 DaemonSet。 如需詳細資訊,請參閱 Kubernetes StatefulSet (英文)。
- DaemonSets:針對特定記錄收集或監視需求,您可能需要在所有或選取的節點上執行指定的 Pod。 DaemonSet 再次用來部署一或多個相同的 Pod,但 DaemonSet 控制器可確保指定的每個節點都會執行 Pod 的實例。 如需詳細資訊,請參閱 Kubernetes DaemonSet (英文)。
命名空間
Kubernetes 資源,例如 Pod 和部署,會以邏輯方式分組為 命名空間。 這些群組可讓您以邏輯方式分割工作負載叢集,並限制存取以建立、檢視或管理資源。 例如,您可以建立命名空間以區隔商務群組。 使用者只能與其指派的命名空間內包含的資源互動。 如需詳細資訊,請參閱 Kubernetes 命名空間。
當您在 Arc 啟用的 AKS 上建立 Azure Kubernetes Service 叢集時,可以使用下列命名空間:
- default:當未提供 Pod 和部署時,預設會建立 Pod 和部署的命名空間。 在較小的環境中,您可以直接將應用程式部署到預設命名空間中,而無須建立額外的邏輯分隔。 當您與 Kubernetes API 互動時 (例如
kubectl get pods
),若未指定命名空間,將會使用預設值。 - kube-system:核心資源所在的命名空間,例如 DNS 和 Proxy 之類的網路功能,或 Kubernetes 儀錶板。 您通常不會將自己的應用程式部署到此命名空間中。
- kube-public:一般不會使用命名空間,但可用於整個叢集上可見的資源,而且可由任何用戶檢視。
密碼
Kubernetes 秘密 可讓您儲存和管理敏感性資訊,例如密碼、OAuth 令牌和安全殼層 (SSH) 密鑰。 根據預設,Kubernetes 會將秘密儲存為未加密的base64編碼字串,而且可由具有API存取權的任何人擷取為純文字。 如需詳細資訊,請參閱 Kubernetes 秘密。
永續性磁碟區
永續性磁碟區是 Kubernetes 叢集中的記憶體資源,已由系統管理員布建,或使用記憶體類別動態布建。 若要使用永續性磁碟區,Pod 會使用 PersistentVolumeClaim要求存取權。 如需詳細資訊,請參閱持續性磁碟區。
混合OS部署
如果指定的工作負載叢集同時包含 Linux 和 Windows 背景工作角色節點,則必須排程到可支援布建工作負載的 OS 上。 Kubernetes 提供兩種機制,以確保工作負載降落在具有目標操作系統的節點上:
- 節點選取器 是 Pod 規格中的簡單欄位,可限制 Pod 只排程到符合作業系統的健康狀態節點。
- Taints 和 tolerations 會一起運作,以確保 Pod 不會不小心排程到節點上。 節點可以「受污染」,使其不接受在Pod規格中明確容忍其污點的Pod。
下一步
在本文中,您已瞭解 Azure Arc 所啟用 AKS 的叢集架構,以及工作負載叢集元件。 如需這些概念的詳細資訊,請參閱下列文章: