你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Kubernetes 服务 (AKS) 的核心概念
本文介绍 Azure Kubernetes 服务 (AKS) 的核心概念,这是一种托管的 Kubernetes 服务,可用于在 Azure 上大规模部署和操作容器化应用程序。
Kubernetes 是一个可以自动部署、缩放和管理容器化应用程序的开源容器业务流程平台。 有关详细信息,请参阅官方 Kubernetes 文档。
AKS 是一种托管 Kubernetes 服务,可简化使用 Kubernetes 部署、管理和缩放容器化应用程序的过程。 有关详细信息,请参阅什么是 Azure Kubernetes 服务 (AKS)?
AKS 群集分为两个主要组件:
- 控制平面:控制平面提供 Kubernetes 核心服务和应用程序工作负载的业务流程。
- 节点:节点是运行应用程序的基础虚拟机 (VM)。
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 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 磁盘大小调整。 有关详细信息,请参阅默认操作系统磁盘大小调整和临时操作系统磁盘。
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。 有关在 AKS 上使用 Windows Server 的详细信息,请参阅 Azure Kubernetes 服务 (AKS) 中的 Windows 容器注意事项。
容器运行时是在节点上执行容器和管理容器映像的软件。 运行时有助于抽象出系统调用或 OS 特定功能,以便在 Linux 或 Windows 上运行容器。 对于 Linux 节点池,containerd
用于 Kubernetes 1.19 及更高版本。 对于 Windows Server 2019 和 2022 节点池,containerd
已正式发布,并且是 Kubernetes 1.23 及更高版本中唯一的运行时选项。
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 命名空间来管理群集资源,例如 coredns 、konnectivity-agent 和 metrics-server 。 |
在 AKS 中,可以使用自动(预览版)或标准模式创建群集。 AKS 自动版提供完全托管程度更高的体验,可管理群集配置,包括节点、缩放、安全性和其他预配置设置。 AKS 标准版可更好地控制群集配置,包括管理节点池、缩放和其他设置的功能。
有关详细信息,请参阅 AKS 自动版和标准版功能比较。
AKS 为群集管理提供三个定价层:免费、标准和高级。 选择的定价层将确定可用于管理群集的功能。
有关详细信息,请参阅AKS 群集管理的定价层。
有关详细信息,请参阅 AKS 支持的 Kubernetes 版本。
有关 AKS 的更多核心概念的信息,请参阅以下资源: