Azure Kubernetes 服务 (AKS) 的核心概念

本文介绍 Azure Kubernetes 服务 (AKS) 的核心概念,这是一种托管的 Kubernetes 服务,可用于在 Azure 上大规模部署和操作容器化应用程序。

什么是 Kubernetes?

Kubernetes 是一个可以自动部署、缩放和管理容器化应用程序的开源容器业务流程平台。 有关详细信息,请参阅官方 Kubernetes 文档

什么是 AKS?

AKS 是一种托管 Kubernetes 服务,可简化使用 Kubernetes 部署、管理和缩放容器化应用程序的过程。 有关详细信息,请参阅什么是 Azure Kubernetes 服务 (AKS)?

群集组件

AKS 群集分为两个主要组件:

  • 控制平面:控制平面提供 Kubernetes 核心服务和应用程序工作负载的业务流程
  • 节点:节点是运行应用程序的基础虚拟机 (VM)。

Kubernetes 控制平面和节点组件的屏幕截图

控制面板

Azure 托管控制平面由多个可管理群集的组件组成:

组件 说明
kube-apiserver API 服务器 (kube-apiserver) 公开了 Kubernetes API,以便从群集内外启用对群集的请求。
etcd etcd 是高度可用的键值存储,可帮助维护 Kubernetes 群集和配置的状态。
kube-scheduler 计划程序 (kube-scheduler) 可帮助你做出计划决策,监视没有分配节点的新 Pod,并选择要在其中运行的节点。
kube-controller-manager 控制器管理器 (kube-controller-manager) 运行控制器进程,例如在节点发生故障时进行通知和响应。
cloud-controller-manager 云控制器管理器 (cloud-controller-manager) 嵌入特定于云的控制逻辑,以运行特定于云提供商的控制器。

节点

每个 AKS 群集至少有一个节点,这是运行 Kubernetes 节点组件的 Azure 虚拟机 (VM)。 以下组件在每个节点上运行:

组件 说明
kubelet kubelet 可确保容器在 Pod 中运行。
kube-proxy kube-proxy 是一个网络代理,用于维护节点上的网络规则。
container runtime 容器运行时管理容器的执行和生命周期。

Azure 虚拟机及 Kubernetes 节点支持资源的屏幕截图

节点配置

VM 大小和映像

节点的 Azure VM 大小定义了 CPU、内存大小以及可用的存储类型(例如高性能 SSD 或常规 HDD)。 选择的 VM 大小取决于工作负载要求和计划在每个节点上运行的 Pod 数量。 有关详细信息,请参阅 Azure Kubernetes 服务 (AKS) 中支持的 VM 大小

在 AKS 中,群集节点的 VM 映像基于 Ubuntu Linux、Azure Linux 或 Windows Server 2022。 创建 AKS 群集或横向扩展节点数时,Azure 平台会自动创建和配置所请求数量的 VM。 代理节点按标准 VM 计费,因此会自动应用任何 VM 大小折扣(包括 Azure 预留)。

OS 磁盘

仅当不支持临时 OS 磁盘且未指定默认 OS 磁盘大小时,才在新的群集或节点池上使用默认 OS 磁盘大小调整。 有关详细信息,请参阅默认操作系统磁盘大小调整临时操作系统磁盘

资源预留

AKS 使用节点资源来帮助节点作为群集的一部分运行。 这种用法可能会造成节点的资源总数和 AKS 中可分配的资源数之间存在差异。 为了维护节点性能和功能,AKS 在每个节点上预留两种类型的资源(CPU 和内存)。 有关详细信息,请参阅 AKS 中的资源预留

操作系统

AKS 支持 Ubuntu 22.04 和 Azure Linux 2.0 作为 Linux 节点池的节点操作系统。 对于 Windows 节点池,AKS 支持将 Windows Server 2022 作为默认操作系统。 Windows Server 2019 将在 Kubernetes 版本 1.32 生命周期结束后停用,并且在将来的版本中不再受支持。 如果需要升级 Windows 操作系统版本,请参阅从 Windows Server 2019 升级到 Windows Server 2022

容器运行时

容器运行时是在节点上执行容器和管理容器映像的软件。 运行时有助于抽象出系统调用或 OS 特定功能,以便在 Linux 或 Windows 上运行容器。 对于 Linux 节点池,containerd 用于 Kubernetes 1.19 及更高版本。 对于 Windows Server 2019 和 2022 节点池,containerd 已正式发布,并且是 Kubernetes 1.23 及更高版本中唯一的运行时选项。

Pod

Pod 是由一个或多个容器构成的组,这些容器共享相同的网络和存储资源,以及有关如何运行容器的规范。 Pod 通常与容器进行 1:1 的映射,但可以在 Pod 中运行多个容器。

节点池

在 AKS 中,具有相同配置的节点将组合成节点池。 这些节点池包含运行应用程序的基础虚拟机规模集和虚拟机 (VM)。 创建 AKS 群集时,你会定义节点的初始数量和大小 (SKU),这会创建系统节点池。 系统节点池主要用于托管关键系统 Pod(例如 CoreDNS 和 konnectivity)。 要支持具有不同计算或存储需求的应用程序,可以创建用户节点池。 用户节点池主要用于托管应用程序 Pod。

有关详细信息,请参阅在 AKS 中创建节点池管理 AKS 中的节点池

节点资源组

在 Azure 资源组中创建 AKS 群集时,AKS 资源提供程序会自动创建名为“节点资源组”的第二个资源组。 此资源组包含与群集关联的所有基础结构资源,包括虚拟机 (VM)、虚拟机规模集和存储。

有关更多信息,请参见以下资源:

命名空间

Kubernetes 资源(如 Pod 和部署)按逻辑合并到一个命名空间中,以划分 AKS 群集并创建、查看资源或管理对资源的访问。

AKS 群集中将默认创建以下命名空间:

命名空间 说明
default 使用默认命名空间,无需创建新的命名空间,即可开始使用群集资源。
kube-node-lease kube-node-lease 命名空间允许节点将其可用性传送给控制平面。
kube-public kube-public 命名空间通常不使用,但可以用于在整个群集中对任何用户都可见的资源。
kube-system Kubernetes 使用 kube-system 命名空间来管理群集资源,例如 corednskonnectivity-agentmetrics-server

用于以逻辑方式划分资源和应用程序的 Kubernetes 命名空间的屏幕截图

群集模式

在 AKS 中,可以使用自动(预览版)标准模式创建群集。 AKS 自动版提供完全托管程度更高的体验,可管理群集配置,包括节点、缩放、安全性和其他预配置设置。 AKS 标准版可更好地控制群集配置,包括管理节点池、缩放和其他设置的功能。

有关详细信息,请参阅 AKS 自动版和标准版功能比较

定价层

AKS 为群集管理提供三个定价层:免费、标准和高级。 选择的定价层将确定可用于管理群集的功能。

有关详细信息,请参阅AKS 群集管理的定价层

支持的 Kubernetes 版本

有关详细信息,请参阅 AKS 支持的 Kubernetes 版本

后续步骤

有关 AKS 的更多核心概念的信息,请参阅以下资源: