词汇表

此术语表旨在提供一份全面、标准化的 Kubernetes 术语列表。它既包含 Kubernetes 特有的技术术语,也包含提供有用背景信息的通用术语。

根据标签筛选术语

Kubernetes 的内部组件。
与 Kubernetes 开源开发相关。
Kubernetes 默认支持的资源类型。
Kubernetes 支持的自定义方式。
适合 Kubernetes 初学者。
Kubernetes 组件之间(以及与集群外程序)的通信方式。
Kubernetes 的启动与维护。
保障 Kubernetes 应用程序的安全。
Kubernetes 应用程序处理持久化数据的方式。
使 Kubernetes 更易于使用或功能更强大的软件。
代表常见的 Kubernetes 用户类型。
在 Kubernetes 上运行的应用程序。
架构 社区 核心对象 扩展 基础 网络 操作 安全 存储 工具 用户类型 工作负载 全选 取消全选

点击下方的 [+] 指示符,获取特定术语的详细解释。

  • 插件 (Add-ons)

    扩展 Kubernetes 功能的资源。

    [+]

    安装插件 介绍了更多关于如何在集群中使用插件的内容,并列出了一些常用插件。

  • 准入控制器 (Admission Controller)

    一段拦截 Kubernetes API 服务器请求的代码,在对象持久化之前执行。

    [+]

    准入控制器可以针对 Kubernetes API 服务器进行配置,并且可以是“验证型”、“变更型”或两者兼具。任何准入控制器都可以拒绝请求。变更型控制器可以修改它们准入的对象;验证型控制器则不能。

  • 亲和性 (Affinity)

    在 Kubernetes 中,亲和性是一组规则,用于向调度程序提示 Pod 的放置位置。

    [+]

    亲和性有两种类型

    这些规则是使用 Kubernetes 标签 (labels) 定义的,并使用在 Pod 中指定的 选择器 (selectors),根据你希望调度程序执行规则的严格程度,它们可以是必须的,也可以是首选的。

  • 聚合层 (Aggregation Layer)

    聚合层允许你在集群中安装额外的 Kubernetes 风格的 API。

    [+]

    当你配置 Kubernetes API 服务器支持额外 API 时,你可以添加 APIService 对象来“认领”Kubernetes API 中的 URL 路径。

  • 注解 (Annotation)

    一种键值对,用于将任意非标识性元数据附加到对象上。

    [+]

    注解中的元数据可以是小型的或大型的、结构化的或非结构化的,并且可以包含 标签 不允许的字符。工具和库等客户端可以检索此元数据。

  • API 组 (API Group)

    Kubernetes API 中一组相关的路径。

    [+]

    你可以通过更改 API 服务器的配置来启用或禁用每个 API 组。你也可以禁用或启用特定 资源 (resources) 的路径。API 组使扩展 Kubernetes API 变得更容易。API 组在 REST 路径和序列化 对象 (object)apiVersion 字段中指定。

    • 阅读 API 组 了解更多信息。
  • API 资源 (API resource)
    也称为:资源 (Resource)

    Kubernetes 类型系统中的一个实体,对应于 Kubernetes API 上的一个端点。资源通常代表一个 对象。某些资源代表对其他对象的操作,例如权限检查。

    [+]

    每个资源代表 Kubernetes API 服务器上的一个 HTTP 端点 (URI),定义了该资源上对象或操作的模式。

  • API 服务器 (API server)
    也称为:kube-apiserver

    API 服务器是 Kubernetes 控制平面 的一个组件,它对外提供 Kubernetes API。API 服务器是 Kubernetes 控制平面的前端。

    [+]

    Kubernetes API 服务器的主要实现是 kube-apiserver。kube-apiserver 设计为水平扩展——即通过部署更多实例来进行扩展。你可以运行 kube-apiserver 的多个实例,并在这些实例之间平衡流量。

  • API 发起的驱逐 (API-initiated eviction)

    API 发起的驱逐是指你使用 驱逐 API (Eviction API) 创建 Eviction 对象,从而触发 Pod 优雅终止的过程。

    [+]

    你可以通过使用 kube-apiserver 的客户端(如 kubectl drain 命令)直接调用驱逐 API 来请求驱逐。当创建 Eviction 对象时,API 服务器会终止该 Pod。

    API 发起的驱逐会遵循你配置的 PodDisruptionBudgetsterminationGracePeriodSeconds

    API 发起的驱逐与 节点压力驱逐 不同。

  • 应用容器 (App Container)

    应用容器(或 app containers)是 Pod 中在任何 初始化容器 (init containers) 完成后启动的 容器

    [+]

    初始化容器允许你分离对于整体 工作负载 很重要,但不需要在应用容器启动后持续运行的初始化细节。如果 Pod 没有配置任何初始化容器,则该 Pod 中的所有容器都是应用容器。

  • 应用程序架构师 (Application Architect)

    负责应用程序高层设计的人员。

    [+]

    架构师确保应用的实现方式能够以可扩展、可维护的方式与其周边组件进行交互。周边组件包括数据库、日志基础设施以及其他微服务。

  • 应用程序开发人员 (Application Developer)

    在 Kubernetes 集群中编写应用程序的人员。

    [+]

    应用程序开发人员专注于应用程序的某一部分。他们的关注范围在规模上可能会有很大差异。

  • 应用程序 (Applications)
    运行各种容器化应用程序的层级。[+]

    运行各种容器化应用程序的层级。

  • 审批人 (Approver)

    能够审查并批准 Kubernetes 代码贡献的人员。

    [+]

    代码审查侧重于代码质量和正确性,而审批侧重于贡献的整体可接受性。整体可接受性包括向后/向前兼容性、遵守 API 和标志约定、细微的性能和正确性问题、与系统其他部分的交互等。审批人的权限范围仅限于代码库的特定部分。审批人以前被称为维护者 (maintainers)。

  • cAdvisor

    cAdvisor(容器顾问)为容器用户提供对其运行的 容器资源 使用情况和性能特征的了解。

    [+]

    它是一个运行中的守护进程,用于收集、聚合、处理和导出有关运行中容器的信息。具体而言,它为每个容器保留资源隔离参数、历史资源使用情况、完整历史资源使用情况的直方图以及网络统计信息。这些数据按容器和机器范围进行导出。

  • 证书 (Certificate)

    用于验证对 Kubernetes 集群访问权限的加密安全文件。

    [+]

    证书使 Kubernetes 集群内的应用程序能够安全地访问 Kubernetes API。证书用于验证客户端是否有权访问 API。

  • cgroup (控制组)

    一组具有可选 资源 隔离、核算和限制的 Linux 进程。

    [+]

    cgroup 是一项 Linux 内核功能,用于限制、核算和隔离进程集合的资源使用(CPU、内存、磁盘 I/O、网络)。

  • CIDR

    CIDR(无类别域间路由)是一种描述 IP 地址块的表示法,在各种网络配置中被大量使用。

    [+]

    在 Kubernetes 的上下文中,每个 节点 (Node) 都通过起始地址和使用 CIDR 的子网掩码被分配一个 IP 地址范围。这允许节点为每个 Pod 分配一个唯一的 IP 地址。虽然最初是 IPv4 的概念,但 CIDR 也已扩展到包含 IPv6。

  • CLA (贡献者许可协议)

    贡献者 (contributor) 将其贡献授予开源项目的条款。

    [+]

    CLA 有助于解决涉及贡献材料和知识产权 (IP) 的法律纠纷。

  • 云控制器管理器 (Cloud Controller Manager)

    一个 Kubernetes 控制平面 组件,嵌入了云特定的控制逻辑。云控制器管理器允许你将集群链接到云提供商的 API,并将与云平台交互的组件与仅与集群交互的组件分离开来。

    [+]

    通过解耦 Kubernetes 与底层云基础设施之间的互操作性逻辑,云控制器管理器组件使云提供商能够以与主 Kubernetes 项目不同的速度发布功能。

  • 云原生计算基金会 (CNCF)

    云原生计算基金会 (CNCF) 构建可持续的生态系统,并围绕作为微服务架构一部分的容器编排 项目 培育社区。

    Kubernetes 是一个 CNCF 项目。

    [+]

    CNCF 是 Linux 基金会 的一个子基金会。其使命是使云原生计算无处不在。

  • 云提供商 (Cloud Provider)
    也称为:云服务提供商 (Cloud Service Provider)

    提供云计算平台的企业或其他组织。

    [+]

    云提供商,有时称为云服务提供商 (CSP),提供云计算平台或服务。

    许多云提供商提供托管基础设施(也称为基础设施即服务或 IaaS)。在托管基础设施中,云提供商负责服务器、存储和网络,而你负责在其之上管理层级,例如运行 Kubernetes 集群。

    你也可以找到作为托管服务的 Kubernetes;有时称为平台即服务,或 PaaS。在托管 Kubernetes 中,你的云提供商负责 Kubernetes 控制平面,以及 节点 (nodes) 和它们所依赖的基础设施:网络、存储,以及可能包括负载均衡器等其他元素。

  • 集群 (Cluster)

    一组称为 节点 (nodes) 的工作机器,用于运行容器化应用程序。每个集群至少有一个工作节点。

    [+]

    工作节点托管构成应用程序工作负载组件的 Pod控制平面 管理集群中的工作节点和 Pod。在生产环境中,控制平面通常运行在多台计算机上,集群通常运行多个节点,从而提供容错能力和高可用性。

  • 集群架构师 (Cluster Architect)

    设计涉及一个或多个 Kubernetes 集群的基础设施的人员。

    [+]

    集群架构师关注分布式系统的最佳实践,例如:高可用性和安全性。

  • 集群基础设施 (Cluster Infrastructure)
    基础设施层提供并维护虚拟机、网络、安全组等。[+]

    基础设施层提供并维护虚拟机、网络、安全组等。

  • 集群操作 (Cluster Operations)

    管理 Kubernetes 集群所涉及的工作:管理日常运营,以及协调升级。

    [+]

    集群操作的工作示例包括:部署新节点以扩展集群;执行软件升级;实施安全控制;添加或删除存储;配置集群网络;管理整个集群的可观测性;以及响应事件。

  • 集群操作员 (Cluster Operator)

    配置、控制和监控集群的人员。

    [+]

    他们的主要职责是保持集群正常运行,这可能涉及周期性的维护活动或升级。

    说明

    集群操作员与扩展 Kubernetes API 的 Operator 模式 不同。
  • 代码贡献者 (Code Contributor)

    开发并向 Kubernetes 开源代码库贡献代码的人员。

    [+]

    他们也是活跃的 社区成员,参与一个或多个 特殊兴趣小组 (SIG)

  • 通用表达式语言 (Common Expression Language)
    也称为:CEL

    一种旨在实现快速、可移植且执行安全的通用表达式语言。

    [+]

    在 Kubernetes 中,CEL 可用于运行查询和执行细粒度过滤。例如,你可以将 CEL 表达式与 动态准入控制 一起使用来过滤请求中的特定字段,并与 动态资源分配 (DRA) 一起使用来根据特定属性选择资源。

  • 条件 (Condition)

    条件是 Kubernetes 资源状态中的一个字段,描述了该资源的当前状态。

    [+]

    条件为 Kubernetes 组件通信资源状态提供了一种标准化方式。每个条件都有一个 type、一个 status(True、False 或 Unknown),以及像 reasonmessage 这样的可选字段,用于提供更多细节。例如,Pod 可能具有 ReadyContainersReadyPodScheduled 等条件。

  • 配置映射 (ConfigMap)

    一种用于以键值对形式存储非机密数据的 API 对象。Pod 可以将 ConfigMap 用作环境变量、命令行参数或 卷 (volume) 中的配置文件。

    [+]

    ConfigMap 允许你将特定于环境的配置与 容器镜像 分离,从而使应用程序易于移植。

  • 容器 (Container)

    一种轻量级且可移植的可执行镜像,包含软件及其所有依赖项。

    [+]

    容器将应用程序与底层主机基础设施分离开来,使部署在不同的云或操作系统环境中变得更容易,并且更容易进行扩展。运行在容器内部的应用程序称为容器化应用程序。将这些应用程序及其依赖项捆绑到容器镜像中的过程称为容器化。

  • 容器设备接口 (CDI)

    容器设备接口 (CDI) 是一种关于如何配置容器内设备的规范。Kubernetes 与设备插件和动态资源分配结合使用 CDI,以便工作负载从运行时接收设备设置,例如绑定挂载或环境变量。

    [+]
  • 容器环境变量 (Container Environment Variables)

    容器环境变量是 name=value 对,为在 Pod 中运行的容器提供有用信息。

    [+]

    容器环境变量提供运行中的容器化应用程序所需的信息,以及有关 容器 重要相关细节的信息。例如,文件系统细节、有关容器本身的信息以及其他集群资源(如服务端点)。

  • 容器生命周期钩子 (Container Lifecycle Hooks)

    生命周期钩子暴露了 容器 管理生命周期中的事件,并允许用户在事件发生时运行代码。

    [+]

    容器暴露了两个钩子:PostStart(在容器创建后立即执行)和 PreStop(这是一个阻塞操作,在容器终止前立即调用)。

  • 容器网络接口 (CNI)

    容器网络接口 (CNI) 插件是一种符合 appc/CNI 规范的网络插件。

    [+]
    • 有关 Kubernetes 和 CNI 的信息,请参阅 网络插件
  • 容器运行时 (Container Runtime)

    使 Kubernetes 能够有效运行容器的基本组件。它负责管理 Kubernetes 环境中容器的执行和生命周期。

    [+]

    Kubernetes 支持容器运行时,例如 containerdCRI-O,以及任何其他 Kubernetes CRI(容器运行时接口) 的实现。

  • 容器运行时接口 (CRI)

    kubelet 与容器运行时之间通信的主要协议。

    [+]

    Kubernetes 容器运行时接口 (CRI) 定义了 gRPC 主要协议,用于 节点组件 kubelet容器运行时 之间的通信。

  • 容器存储接口 (CSI)

    容器存储接口 (CSI) 定义了一个向容器公开存储系统的标准接口。

    [+]

    CSI 允许供应商为 Kubernetes 创建自定义存储插件,而无需将其添加到 Kubernetes 代码库中(树外插件)。要使用存储提供商的 CSI 驱动程序,你必须先 将其部署到你的集群中。然后,你就可以创建一个使用该 CSI 驱动程序的 存储类 (Storage Class)

  • containerd

    一种强调简单性、健壮性和可移植性的容器运行时。

    [+]

    containerd 是一种在 Linux 或 Windows 上作为守护进程运行的 容器 运行时。containerd 负责获取和存储容器镜像、执行容器、提供网络访问等。

  • 贡献者 (Contributor)

    捐赠代码、文档或时间以帮助 Kubernetes 项目或社区的人。

    [+]

    贡献包括拉取请求 (PR)、议题、反馈、参与 特殊兴趣小组 (SIG),或组织社区活动。

  • 控制平面 (Control Plane)

    容器编排层,提供 API 和接口来定义、部署和管理容器的生命周期。

    [+]

    此层由许多不同的组件组成,例如(但不限于)

    这些组件可以作为传统的操作系统服务(守护进程)或作为容器运行。运行这些组件的主机历史上被称为 主节点 (masters)

  • 控制器 (Controller)

    在 Kubernetes 中,控制器是控制循环,用于观察你的 集群 状态,然后在需要时进行更改或请求更改。每个控制器都试图将当前的集群状态移动到期望的状态。

    [+]

    控制器通过 apiserver控制平面 的一部分)观察集群的共享状态。

    一些控制器也运行在控制平面内,提供对 Kubernetes 核心操作至关重要的控制循环。例如:deployment 控制器、daemonset 控制器、namespace 控制器和持久卷控制器(以及其他)都运行在 kube-controller-manager 内部。

  • CRI-O

    一种允许你在 Kubernetes CRI 中使用 OCI 容器运行时的工具。

    [+]

    CRI-O 是 容器运行时接口 (CRI) 的一种实现,旨在实现使用与开放容器倡议 (OCI) 运行时规范 兼容的 容器 运行时。

    部署 CRI-O 允许 Kubernetes 使用任何符合 OCI 的运行时作为容器运行时来运行 Pod,并从远程仓库获取 OCI 容器镜像。

  • 定时任务 (CronJob)

    管理按周期性计划运行的 任务 (Job)

    [+]

    类似于 crontab 文件中的一行,CronJob 对象使用 cron 格式指定计划。

  • 自定义资源定义 (CustomResourceDefinition)

    一种 API 对象,它定义了一个新的自定义 API 以添加到你的 Kubernetes API 服务器中,而无需构建一个完整的自定义服务器。

    [+]

    如果内置的 API 资源 无法满足你的需求,自定义资源定义允许你为环境扩展 Kubernetes API。

  • 守护进程集 (DaemonSet)

    确保 Pod 的副本在 集群 中的一组节点上运行。

    [+]

    用于部署系统守护进程,例如通常必须在每个 节点 (Node) 上运行的日志收集器和监控代理。

  • 数据平面 (Data Plane)
    提供 CPU、内存、网络和存储等容量的层级,以便容器可以运行并连接到网络。[+]

    提供 CPU、内存、网络和存储等容量的层级,以便容器可以运行并连接到网络。

  • 部署 (Deployment)

    一种管理副本应用程序的 API 对象,通常通过运行没有本地状态的 Pod 来实现。

    [+]

    每个副本由一个 Pod 代表,并且 Pod 分布在集群的 节点 之间。对于确实需要本地状态的工作负载,请考虑使用 StatefulSet

  • 开发人员 (Developer) (歧义消除)

    可能指:应用程序开发人员代码贡献者平台开发人员

    [+]

    根据上下文,这个重载术语可能有不同的含义

  • 设备 (Device)

    直接或间接连接到你的 节点 的一个或多个 基础设施资源

    [+]

    设备可能是 GPU 等商业产品,或 ASIC 板等自定义硬件。连接的设备通常需要设备驱动程序,让 Kubernetes Pod 能够访问这些设备。

  • 设备插件 (Device Plugin)

    设备插件运行在工作 节点 上,并为 Pod 提供对基础设施 资源(例如本地硬件)的访问,这些资源需要供应商特定的初始化或设置步骤。

    [+]

    设备插件向 kubelet 通告资源,以便工作负载 Pod 可以访问与 Pod 运行节点相关的硬件功能。你可以将设备插件部署为 DaemonSet,或者直接在每个目标节点上安装设备插件软件。

    参阅 设备插件 了解更多信息。

  • 设备类 (DeviceClass)

    集群中可与动态资源分配 (DRA) 一起使用的 设备 类别。

    [+]

    管理员或设备所有者使用 DeviceClasses 来定义一组可以被认领并在工作负载中使用的设备。通过创建 ResourceClaims 并过滤 DeviceClass 中的特定设备参数来认领设备。

    有关更多信息,请参阅 动态资源分配

  • 中断 (Disruption)

    中断是指导致一个或多个 Pod 停止服务的事件。中断对依赖于受影响 Pod 的工作负载管理 资源(例如 Deployment)有影响。

    [+]

    如果你作为集群操作员,销毁了一个属于应用程序的 Pod,Kubernetes 将其称为自愿中断。如果 Pod 因为节点故障或影响更广泛故障域的停机而离线,Kubernetes 将其称为非自愿中断

    参阅 中断 了解更多信息。

  • Docker

    Docker(具体来说,Docker Engine)是一种提供操作系统级虚拟化的软件技术,也称为 容器

    [+]

    Docker 使用 Linux 内核的资源隔离功能(如 cgroups 和内核命名空间)以及联合文件系统(如 OverlayFS 等)来允许独立的容器在单个 Linux 实例中运行,避免了启动和维护虚拟机 (VM) 的开销。

  • Dockershim

    Dockershim 是 Kubernetes 1.23 及更早版本中的一个组件。它允许 kubeletDocker Engine 进行通信。

    [+]

    从 1.24 版本开始,dockershim 已从 Kubernetes 中移除。更多信息,请参阅 Dockershim 常见问题解答

  • Downstream(下游,歧义消除)

    可能指代:Kubernetes 生态系统中依赖于核心 Kubernetes 代码库或派生(forked)仓库的代码。

    [+]
    • Kubernetes 社区中:对话中常使用 downstream(下游)来指代依赖于核心 Kubernetes 代码库的生态系统、代码或第三方工具。例如,Kubernetes 中的一项新功能可能会被下游应用所采用,以增强其功能。
    • GitHubgit 中:惯例是将派生仓库称为 downstream(下游),而源仓库被视为 upstream(上游)。
  • Downward API(向下 API)

    Kubernetes 提供的一种将 Pod 和容器的字段值暴露给容器内运行的代码的机制。

    [+]

    有时容器需要了解关于自身的信息,而无需修改直接将其与 Kubernetes 耦合的容器代码,这非常有用。

    Kubernetes Downward API 允许容器获取关于自身或其在 Kubernetes 集群中上下文的信息。容器中的应用程序可以访问这些信息,而无需作为 Kubernetes API 的客户端进行操作。

    有两种方式可以将 Pod 和容器字段暴露给正在运行的容器

    这两种暴露 Pod 和容器字段的方式统称为 *downward API*。

  • Drain(驱逐/排空)

    节点 安全地驱逐 Pod,从而为维护或从 集群 中移除该节点做准备的过程。

    [+]

    kubectl drain 命令用于将 节点 标记为不可调度。执行时,它会从 节点 上驱逐所有 Pod。如果驱逐请求被暂时拒绝,kubectl drain 会重试,直到所有 Pod 被终止或达到可配置的超时时间。

  • Duration(持续时间)

    表示一段时间长度的字符串值。

    [+]

    (Kubernetes) 持续时间的格式基于 Go 编程语言中的 time.Duration 类型。

    在通过持续时间进行配置的 Kubernetes API 中,该值表现为非负整数序列与时间单位后缀的组合。可以包含多个时间量,持续时间即这些时间量的总和。有效的时间单位包括 "ns"、"µs"(或 "us")、"ms"、"s"、"m" 和 "h"。

    例如:5s 表示五秒的持续时间,1m30s 表示一分三十秒的持续时间。

  • Dynamic Resource Allocation(动态资源分配)
    也称为:DRA

    一项 Kubernetes 功能,允许你在 Pod 之间请求和共享资源。这些资源通常是附属于集群节点的 设备,例如硬件加速器。

    [+]

    借助 DRA,设备驱动程序和集群管理员可以定义在工作负载中可申请的设备。Kubernetes 会将匹配的设备分配给特定的申请,并将相应的 Pod 放置在可以访问所分配设备的节点上。

  • Dynamic Volume Provisioning(动态卷配置)

    允许用户请求自动创建存储

    [+]

    动态配置消除了集群管理员预先配置存储的需求。相反,它会根据用户请求自动配置存储。动态卷配置基于一个 API 对象 StorageClass,该对象引用了一个负责配置 卷插件 以及传递给该插件的参数集合。

  • Endpoints(端点)

    一个已弃用的 API,表示 Service 的所有端点集合。

    [+]

    从 v1.21 开始,Kubernetes 使用 EndpointSlices 而不是 Endpoints;原始的 Endpoints API 由于可扩展性方面的考量已被弃用。

    要了解关于 Endpoints 的更多信息,请阅读 Endpoints

  • EndpointSlice(端点切片)

    EndpointSlices 跟踪后端端点的 IP 地址。EndpointSlices 通常与 Service 相关联,且后端端点通常代表 Pod

    [+]

    一个 Service 可以由多个 Pod 支持。Kubernetes 用与该 Service 相关联的一组 EndpointSlices 来表示 Service 的后端端点。后端端点通常(但并非总是)是集群中运行的 Pod。

    控制平面通常会自动为你管理 EndpointSlices。然而,对于没有指定 选择器 (selectors)Services,EndpointSlices 也可以手动定义。

  • Ephemeral Container(临时容器)

    一种可以在 Pod 内部临时运行的 容器 类型。

    [+]

    如果你想调查一个运行出现问题的 Pod,可以向该 Pod 添加一个临时容器并进行诊断。临时容器没有 资源 或调度保证,你不应该使用它们来运行工作负载本身的任何部分。

    临时容器不支持 静态 Pod (static pods)

  • etcd

    一致且高度可用的键值存储,用作 Kubernetes 所有集群数据的后端存储。

    [+]

    如果你的 Kubernetes 集群使用 etcd 作为其后端存储,请确保你有一个数据备份计划。

    你可以在官方文档中找到有关 etcd 的深入信息。

  • Event(事件)

    一种 Kubernetes 对象,用于描述集群中的状态变更或显著事件。

    [+]

    事件的保留时间有限,触发器和消息可能会随时间演变。事件消费者不应依赖于具有特定原因的事件时间来反映一致的基础触发器,也不应依赖于具有该原因的事件的持续存在。

    事件应被视为信息性的、尽力而为的补充数据。

    在 Kubernetes 中,审计 (auditing) 会生成另一种类型的事件记录(API 组 audit.k8s.io)。

  • Eviction(驱逐)

    驱逐是在节点上终止一个或多个 Pod 的过程。

    [+]
  • Extensions(扩展)

    扩展是与 Kubernetes 深度集成并进行扩展的软件组件,用于支持新型硬件。

    [+]

    许多集群管理员使用托管的或发行版的 Kubernetes 实例。这些集群预装了扩展。因此,大多数 Kubernetes 用户不需要安装 扩展,更少有用户需要编写新的扩展。

  • Feature gate(特性门控)

    特性门控是一组键(不透明的字符串值),你可以使用它们来控制集群中启用了哪些 Kubernetes 特性。

    [+]

    你可以通过每个 Kubernetes 组件上的 --feature-gates 命令行标志来开启或关闭这些特性。每个 Kubernetes 组件都允许你启用或禁用与该组件相关的一组特性门控。Kubernetes 文档列出了所有当前的 特性门控 及其控制的内容。

  • Finalizer(终结器)

    终结器是命名空间的键,用于告知 Kubernetes 在完全删除被标记为删除的 资源 之前必须等待特定条件满足。终结器会提醒 控制器 清理被删除对象所拥有的资源。

    [+]

    当你告知 Kubernetes 删除一个指定了终结器的对象时,Kubernetes API 会通过填充 .metadata.deletionTimestamp 将该对象标记为删除,并返回 202 状态码(HTTP "Accepted")。在控制平面或其他组件执行终结器定义的操作时,目标对象保持在终止状态。这些操作完成后,控制器会从目标对象中移除相关的终结器。当 metadata.finalizers 字段为空时,Kubernetes 认为删除完成并删除该对象。

    你可以使用终结器来控制资源的 垃圾回收。例如,你可以定义一个终结器,在控制器删除正在被终结的对象之前清理相关的 API 资源 或基础设施。

  • FlexVolume

    FlexVolume 是一个用于创建树外(out-of-tree)卷插件的已弃用接口。容器存储接口 (CSI) 是一个更新的接口,解决了 FlexVolume 的若干问题。

    [+]

    FlexVolume 允许用户编写自己的驱动程序并为 Kubernetes 中的卷添加支持。FlexVolume 驱动程序二进制文件和依赖项必须安装在主机上。这需要 root 权限。Storage SIG 建议尽可能实施 CSI 驱动程序,因为它解决了 FlexVolume 的限制。

  • Garbage Collection(垃圾回收)

    垃圾回收是 Kubernetes 用于清理集群资源的各种机制的统称。

    [+]

    Kubernetes 使用垃圾回收来清理诸如 未使用的容器和镜像失败的 Pod目标资源所拥有的对象已完成的 Job 以及过期或失败的资源。

  • Gateway API(网关 API)

    用于在 Kubernetes 中建模服务网络的一系列 API 类型。

    [+]

    Gateway API 提供了一系列可扩展的、面向角色的、协议感知的 API 类型,用于在 Kubernetes 中建模服务网络。

  • Group Version Resource (GVR)(组版本资源)
    也称为:GVR

    唯一表示特定 Kubernetes API 的方式。

    [+]

    组版本资源 (GVR) 指定了与访问 Kubernetes 中特定对象 ID 相关联的 API 组、API 版本和 资源(对象种类在 URI 中出现的名称)。GVR 允许你定义和区分不同的 Kubernetes 对象,并指定一种即使在 API 发生变更时依然稳定的访问对象的方式。

    在此用法中,资源 指的是 HTTP 资源。由于某些 API 是命名空间作用域的,GVR 可能不会指向特定的 API 资源

  • Helm Chart

    一种可用 Helm 工具管理的预配置 Kubernetes 配置包。

    [+]

    Chart 提供了一种创建和共享 Kubernetes 应用的可重现方式。单个 Chart 可用于部署简单的内容(如 memcached Pod),或复杂的内容(如带有 HTTP 服务器、数据库、缓存等的完整 Web 应用栈)。

  • Horizontal Pod Autoscaler (HPA)(水平 Pod 自动扩缩器)
    也称为:HPA

    一种根据目标 资源 利用率或自定义指标目标自动缩放 Pod 副本数量的 对象

    [+]

    HorizontalPodAutoscaler (HPA) 通常与 DeploymentsReplicaSets 一起使用。它不能应用于无法扩缩的对象,例如 DaemonSets

  • HostAliases(主机别名)

    HostAliases 是要注入到 Pod hosts 文件中的 IP 地址与主机名之间的映射。

    [+]

    HostAliases 是一个可选的主机名和 IP 地址列表,如果指定,它们将被注入到 Pod 的 hosts 文件中。这仅适用于非 hostNetwork Pod。

  • Image(镜像)

    容器 的存储实例,保存了运行应用程序所需的一组软件。

    [+]

    一种打包软件的方式,允许将其存储在容器注册表中、拉取到本地系统并作为应用程序运行。镜像中包含元数据,可以指示要运行的可执行文件、构建者以及其他信息。

  • Immutable Infrastructure(不可变基础设施)

    不可变基础设施是指计算机基础设施(虚拟机、容器、网络设备)在部署后即不可更改。

    [+]

    不可变性可以通过自动化进程覆盖未经授权的更改来强制执行,或者通过系统从根本上不允许更改来执行。容器 是不可变基础设施的一个很好的例子,因为对容器的持久性更改只能通过创建新版本的容器或根据镜像重新创建现有容器来实现。

    通过防止或识别未经授权的更改,不可变基础设施使识别和缓解安全风险变得更容易。操作此类系统变得直截了当得多,因为管理员可以对其做出预设——毕竟,他们知道没人会犯错或进行未沟通的更改。不可变基础设施与“基础设施即代码”齐头并进,其中创建基础设施所需的所有自动化都存储在版本控制系统(如 Git)中。这种不可变性和版本控制的结合意味着对系统的每一次授权更改都有持久的审计日志。

  • Ingress(入口)

    一种管理集群中服务外部访问的 API 对象,通常为 HTTP。

    [+]

    Ingress 可以提供负载均衡、SSL 终止和基于名称的虚拟主机。

  • Init Container(初始化容器)

    一个或多个在任何应用容器运行之前必须成功运行完成的初始化 容器

    [+]

    初始化(init)容器与常规应用容器类似,但有一个区别:init 容器必须在应用容器启动前运行完成。Init 容器按顺序运行:每个 init 容器必须在下一个 init 容器开始前成功运行完成。

    边车容器 (sidecar containers) 不同,init 容器在 Pod 启动后不会继续运行。

    更多信息,请阅读 init 容器

  • Istio

    一个开放平台(非 Kubernetes 专属),提供了一种统一的方式来集成微服务、管理流量、强制执行策略并聚合遥测数据。

    [+]

    添加 Istio 无需更改应用程序代码。它是服务与网络之间的一层基础设施,当与服务部署结合使用时,通常被称为服务网格 (service mesh)。Istio 的控制平面抽象了底层集群管理平台(可能是 Kubernetes、Mesosphere 等)。

  • Job(任务)

    运行直到完成的有限或批处理任务。

    [+]

    创建并确保指定数量的 Pod 对象成功终止。随着 Pod 成功完成,Job 会跟踪成功完成的数量。

  • JSON Web Token (JWT)

    一种在两方之间传输声明的表示方式。

    [+]

    JWT 可以进行数字签名和加密。Kubernetes 使用 JWT 作为身份验证令牌,以验证希望在集群中执行操作的实体的身份。

  • kOps (Kubernetes Operations)

    kOps 不仅可以帮助你创建、销毁、升级和维护生产级的、高可用的 Kubernetes 集群,还可以配置必要的基础设施。

    [+]

    说明

    AWS (Amazon Web Services) 目前已获得官方支持,DigitalOcean、GCE 和 OpenStack 处于 Beta 支持阶段,Azure 处于 Alpha 支持阶段。

    kOps 是一个自动化配置系统

    • 完全自动化的安装
    • 使用 DNS 来识别集群
    • 自我修复:所有内容都在自动伸缩组 (Auto-Scaling Groups) 中运行
    • 支持多种操作系统 (Amazon Linux, Debian, Flatcar, RHEL, Rocky, Ubuntu)
    • 高可用性支持
    • 可以直接配置基础设施,或生成 terraform 清单
  • kube-controller-manager

    运行 控制器 进程的控制平面组件。

    [+]

    从逻辑上讲,每个 控制器 都是一个独立的进程,但为了降低复杂性,它们都被编译成单个二进制文件并在单个进程中运行。

  • kube-proxy

    kube-proxy 是一个运行在集群每个 节点 上的网络代理,实现了部分 Kubernetes Service 概念。

    [+]

    kube-proxy 在节点上维护网络规则。这些规则允许网络会话与集群内外的 Pod 进行通信。

    如果操作系统具备包过滤层并且可用,kube-proxy 会使用它。否则,kube-proxy 会自行转发流量。

  • kube-scheduler

    控制平面组件,负责监视新创建的、未分配 节点Pod,并选择节点供其运行。

    [+]

    调度决策考虑的因素包括:单独和集体的 资源 需求、硬件/软件/策略约束、亲和性 (affinity) 与反亲和性规范、数据局部性、工作负载间干扰以及截止日期。

  • Kubeadm

    一种用于快速安装 Kubernetes 并搭建安全集群的工具。

    [+]

    你可以使用 kubeadm 安装控制平面组件和 工作节点 组件。

  • Kubectl
    也称为:kubectl

    用于通过 Kubernetes API 与 Kubernetes 集群 控制平面 通信的命令行工具。

    [+]

    你可以使用 kubectl 创建、检查、更新和删除 Kubernetes 对象。

    在英语中,kubectl 的(官方)发音为 /kjuːb/ /kənˈtɹəʊl/(类似于 "cube control")。

  • Kubelet

    在集群的每个 节点 上运行的代理。它确保 容器Pod 中运行。

    [+]

    kubelet 接收通过各种机制提供的一组 PodSpec,并确保这些 PodSpec 中描述的容器正在运行且健康。kubelet 不管理非 Kubernetes 创建的容器。

  • Kubernetes API

    通过 RESTful 接口提供 Kubernetes 功能并存储集群状态的应用程序。

    [+]

    Kubernetes 资源和“意图记录”都作为 API 对象存储,并通过对 API 的 RESTful 调用进行修改。该 API 允许以声明式的方式管理配置。用户可以直接与 Kubernetes API 交互,或通过 kubectl 等工具进行交互。核心 Kubernetes API 非常灵活,也可以扩展以支持自定义资源。

  • Label(标签)

    为对象添加标识性属性的标记,这对用户而言是有意义且相关的。

    [+]

    标签是附加到 Pod 等对象上的键值对。它们用于组织和选择对象的子集。

  • LimitRange(限制范围)

    针对特定 命名空间,为每个 容器Pod 约束资源消耗。

    [+]

    LimitRange 可以限制可创建的 API 资源 数量(针对特定资源类型),或者命名空间内单个容器或 Pod 可请求/消耗的 基础设施资源 数量。

  • Logging(日志记录)

    日志是 集群 或应用程序记录的事件列表。

    [+]

    应用程序和系统日志可以帮助你了解集群内部正在发生什么。日志对于调试问题和监控集群活动特别有用。

  • Managed Service(托管服务)

    由第三方供应商维护的软件产品。

    [+]

    托管服务的一些示例包括 AWS EC2、Azure SQL Database 和 GCP Pub/Sub,但它们可以是应用程序使用的任何软件产品。

  • Manifest(清单)

    JSONYAML 格式指定的 Kubernetes API 对象规范。

    [+]

    清单指定了对象的期望状态,当你应用该清单时,Kubernetes 会维护此状态。对于 YAML 格式,每个文件可以包含多个清单。

  • Master(主节点,遗留术语)

    遗留术语,用作托管 控制平面节点 的同义词。

    [+]

    该术语仍被一些配置工具(如 kubeadm)和托管服务使用,用于用 kubernetes.io/role 标记 节点 并控制 控制平面 Pod 的放置。

  • Member(成员)

    K8s 社区中持续活跃的 贡献者

    [+]

    成员可以通过 GitHub 团队被分配 issue 和 PR,并参与 特别兴趣小组 (SIGs)。成员的 PR 会自动运行预提交测试。成员应保持作为社区的活跃贡献者。

  • Minikube

    用于在本地运行 Kubernetes 的工具。

    [+]

    Minikube 在你计算机上的虚拟机内运行一个一体化或多节点的本地 Kubernetes 集群。你可以使用 Minikube 在 学习环境中尝试 Kubernetes

  • Mirror Pod(镜像 Pod)

    kubelet 用来表示 静态 PodPod 对象。

    [+]

    当 kubelet 在其配置中发现静态 Pod 时,它会自动尝试在 Kubernetes API 服务器上为该 Pod 创建一个 Pod 对象。这意味着该 pod 将在 API 服务器上可见,但不能从那里控制它。

    (例如,删除镜像 Pod 不会阻止 kubelet 守护进程运行它)。

  • Mixed Version Proxy (MVP)(混合版本代理)
    也称为:MVP

    允许 kube-apiserver 将资源请求代理到不同的对等 API 服务器的功能。

    [+]

    当集群中有多个运行不同版本 Kubernetes 的 API 服务器时,此功能使 资源 请求能够由正确的 API 服务器提供服务。

    MVP 默认禁用,可以通过在启动 API 服务器 时启用名为 UnknownVersionInteroperabilityProxy特性门控 来激活。

  • Name(名称)

    客户端提供的、用于引用 资源 URL 中的对象的字符串,例如 /api/v1/pods/some-name

    [+]

    在同一时间,特定类型只能有一个对象具有给定的名称。但是,如果你删除了该对象,则可以创建一个具有相同名称的新对象。

  • Namespace(命名空间)

    Kubernetes 用于在单个 集群 内支持隔离 API 资源 组的抽象。

    [+]

    命名空间用于组织集群中的对象,并提供了一种划分集群资源的方式。资源名称需要在命名空间内唯一,但不需要在跨命名空间时唯一。基于命名空间的作用域仅适用于命名空间作用域的资源 (例如:Pods, Deployments, Services),而不适用于集群范围的资源 (例如:StorageClasses, Nodes, PersistentVolumes)

  • Network Policy(网络策略)

    关于 Pod 组如何允许彼此通信以及与其他网络端点通信的规范。

    [+]

    NetworkPolicy 帮助你以声明式方式配置哪些 Pod 允许相互连接、哪些命名空间允许通信,更具体地说是强制执行每个策略的端口号。NetworkPolicy 对象使用 标签 来选择 Pod 并定义规则,指定允许访问所选 Pod 的流量。

    NetworkPolicy 由网络提供商提供的受支持的网络插件实现。请注意,创建一个没有控制器来执行它的 NetworkPolicy 对象将不会产生任何效果。

  • Node(节点)

    节点是 Kubernetes 中的工作机器。

    [+]

    工作节点可以是虚拟机或物理机,具体取决于集群。它具有运行 Pod 所需的本地守护进程或服务,并由控制平面管理。节点上的守护进程包括 kubeletkube-proxy 和实现 CRI(如 Docker)的容器运行时。

    在早期的 Kubernetes 版本中,节点被称为 "Minions"。

  • Node-pressure eviction(节点压力驱逐)
    也称为:kubelet 驱逐

    节点压力驱逐是 kubelet 主动终止 pod 以回收节点上 资源 的过程。

    [+]

    kubelet 会监控集群节点上的 CPU、内存、磁盘空间和文件系统 inode 等资源。当一个或多个这些资源达到特定的消耗水平时,kubelet 可以主动使节点上的一个或多个 pod 失败,以回收资源并防止资源枯竭。

    节点压力驱逐与 API 发起的驱逐 不同。

  • Object(对象)

    Kubernetes 系统中的一个实体。对象是 Kubernetes API 用于表示集群状态的 API 资源

    [+]

    Kubernetes 对象通常是一份“意图记录”——一旦你创建了该对象,Kubernetes 控制平面 就会不断努力确保它所代表的项目确实存在。通过创建对象,你实际上是在告诉 Kubernetes 系统你希望集群工作负载的那一部分看起来是什么样;这就是你集群的期望状态。

  • Operator pattern(Operator 模式)

    Operator 模式 是一种将 控制器 链接到一个或多个自定义资源的设计模式。

    [+]

    你可以通过向集群添加控制器来扩展 Kubernetes,超越 Kubernetes 本身自带的内置控制器。

    如果一个运行中的应用程序充当控制器,并拥有针对控制平面中定义的自定义资源执行任务的 API 访问权限,这就是 Operator 模式的一个示例。

  • Persistent Volume (PV)(持久卷)

    一种代表集群中一块存储的 API 对象。它被表示为一种通用的、可插入的存储 资源,其生命周期可以超越任何单个 Pod

    [+]

    PersistentVolumes (PV) 提供了一个 API,它将存储提供方式的细节与其被消费方式的细节分离开来。PV 直接用于存储可以提前创建的场景(静态配置)。对于需要按需存储的场景(动态配置),则使用 PersistentVolumeClaims (PVCs) 代替。

  • Persistent Volume Claim (PVC)(持久卷申请)

    申请 PersistentVolume 中定义的存储 资源,以便存储可以作为卷挂载到 容器 中。

    [+]

    指定存储量、访问方式(只读、读写和/或独占)以及回收方式(保留、回收或删除)。存储本身的详细信息在 PersistentVolume 对象中描述。

  • Platform Developer(平台开发者)

    自定义 Kubernetes 平台以满足其项目需求的人。

    [+]

    例如,平台开发者可以使用 自定义资源 (Custom Resources)通过聚合层扩展 Kubernetes API 来为其 Kubernetes 实例添加功能,专门针对其应用程序。一些平台开发者也是 贡献者,并开发贡献给 Kubernetes 社区的扩展。其他人则开发闭源的商业或特定站点扩展。

  • Pod

    最小且最简单的 Kubernetes 对象。Pod 代表你集群中一组正在运行的 容器

    [+]

    Pod 通常配置为运行单个主容器。它也可以运行添加日志记录等补充功能的辅助边车容器。Pod 通常由 Deployment 管理。

  • Pod Disruption(Pod 中断)

    Pod 中断 是节点上的 Pod 被主动或被动终止的过程。

    [+]

    主动中断由应用程序所有者或集群管理员有意发起。被动中断是无意的,可能由节点资源耗尽等不可避免的问题引发,或由意外删除触发。

  • Pod Disruption Budget (PDB)(Pod 中断预算)
    也称为:PDB

    Pod 中断预算 允许应用程序所有者为副本应用创建一个对象,以确保在任何时间点,具有指定标签的 Pod 至少有一定数量或百分比不会被主动驱逐。

    [+]

    被动中断无法通过 PDB 阻止;但是它们会被计入预算中。

  • Pod Lifecycle(Pod 生命周期)

    Pod 在其存续期间经历的状态序列。

    [+]

    Pod 生命周期 由 Pod 的状态或阶段定义。Pod 有五种可能的阶段:Pending、Running、Succeeded、Failed 和 Unknown。Pod 状态的高级描述总结在 PodStatusphase 字段中。

  • Pod Priority(Pod 优先级)

    Pod 优先级指示一个 Pod 相对于其他 Pod 的重要性。

    [+]

    Pod 优先级 使你能够将 Pod 的调度优先级设置为高于或低于其他 Pod——这是生产集群工作负载的一个重要特性。

  • Pod Security Policy(Pod 安全策略)

    一种旧的 Kubernetes API,在 Pod 创建和更新期间强制执行安全限制。

    [+]

    PodSecurityPolicy 自 Kubernetes v1.21 起被弃用,并在 v1.25 中移除。作为替代方案,请使用 Pod 安全准入 (Pod Security Admission) 或第三方准入插件。

  • PodGroup
    PodGroup 是一种运行时对象,代表作为一个单元一起调度的一组 Pod。虽然工作负载 API 定义调度策略模板,但 PodGroup 是 carry 策略和特定组实例调度状态的运行时对应物。[+]

    PodGroup 是一种运行时对象,代表作为一个单元一起调度的一组 Pod。虽然 工作负载 API 定义了调度策略模板,但 PodGroup 是 carry 策略和特定组实例调度状态的运行时对应物。

  • PodTemplate(Pod 模板)
    也称为:pod template

    一种定义用于创建 Pod 的模板的 API 对象。PodTemplate API 也嵌入在用于工作负载管理的 API 定义中,例如 DeploymentStatefulSets

    [+]

    Pod 模板允许你定义通用元数据(例如标签或新 Pod 名称的模板),并指定 Pod 的期望状态。工作负载管理 控制器使用 Pod 模板(嵌入到另一个对象中,例如 Deployment 或 StatefulSet)来定义和管理一个或多个 Pod。当基于同一模板可以存在多个 Pod 时,这些被称为 副本 (replicas)。虽然你可以直接创建 PodTemplate 对象,但你很少需要这样做。

  • Preemption(抢占)

    Kubernetes 中的抢占逻辑通过驱逐节点上现有的低优先级 Pod,帮助挂起的 Pod 找到合适的 节点

    [+]

    如果一个 Pod 无法被调度,调度程序会尝试 抢占 低优先级 Pod,以使挂起的 Pod 调度成为可能。

  • PriorityClass(优先级类)

    PriorityClass 是一种命名的调度优先级类,应分配给该类中的 Pod。

    [+]

    PriorityClass 是一个非命名空间对象,将名称映射到用于 Pod 的整数优先级。名称在 metadata.name 字段中指定,优先级值在 value 字段中指定。优先级范围从 -2147483648 到 1000000000(含)。值越高,优先级越高。

  • Probe(探针)

    kubelet 定期对 Pod 中运行的容器执行的检查,该检查将定义容器的状态和健康状况,并告知容器的生命周期。

    [+]

    要了解更多信息,请阅读 容器探针

  • Proxy(代理)

    在计算中,代理是一个充当远程服务中介的服务器。

    [+]

    客户端与代理交互;代理将客户端的数据复制到实际服务器;实际服务器回复代理;代理将实际服务器的回复发送给客户端。

    kube-proxy 是一个运行在集群每个节点上的网络代理,实现了部分 Kubernetes Service 概念。

    你可以将 kube-proxy 作为普通用户空间代理服务运行。如果你的操作系统支持,你可以改为以混合模式运行 kube-proxy,该模式使用更少的系统资源达到相同的整体效果。

  • QoS Class(服务质量等级)

    QoS Class(服务质量等级)提供了一种让 Kubernetes 将集群内的 Pod 分类到几个等级中,并就调度和驱逐做出决策的方法。

    [+]

    Pod 的 QoS 等级是在创建时根据其 基础设施资源 请求和限制设置确定的。QoS 等级用于就 Pod 调度和驱逐做出决策。Kubernetes 可以为 Pod 分配以下 QoS 等级之一:GuaranteedBurstableBestEffort

  • Quantity(数量)

    使用 SI 后缀的小数或大数的整数表示法。

    [+]

    Quantity 是使用带有 SI 后缀的紧凑整数表示法表示小数字或大数字的方式。分数使用 milli 单位表示,而大数字可以使用 kilo、mega 或 giga 单位表示。

    例如,数字 1.5 表示为 1500m,而数字 1000 可以表示为 1k1000000 表示为 1M。你也可以指定 二进制表示法 后缀;数字 2048 可以写为 2Ki

    接受的十进制(10 的幂)单位是 m (milli)、k (kilo,有意小写)、M (mega)、G (giga)、T (tera)、P (peta)、E (exa)。

    接受的二进制(2 的幂)单位是 Ki (kibi)、Mi (mebi)、Gi (gibi)、Ti (tebi)、Pi (pebi)、Ei (exbi)。

  • RBAC (Role-Based Access Control)(基于角色的访问控制)

    管理授权决策,允许管理员通过 Kubernetes API 动态配置访问策略。

    [+]

    RBAC 使用四种 Kubernetes 对象

    角色
    定义特定命名空间内的权限规则。
    ClusterRole
    定义整个集群范围内的权限规则。
    RoleBinding
    将角色中定义的权限授予特定命名空间内的一组用户。
    ClusterRoleBinding
    将角色中定义的权限授予整个集群范围内的用户组。

    更多信息,请参阅 RBAC

  • 副本 (Replica)

    Pod 或一组 Pod 的拷贝或复制品。副本通过维护多个相同的 Pod 实例来确保高可用性、可扩展性和容错能力。

    [+]

    副本在 Kubernetes 中通常用于实现预期的应用状态和可靠性。它们支持工作负载的扩缩容,并能分布在集群的多个节点上。

    通过在 Deployment 或 ReplicaSet 中定义副本数量,Kubernetes 可以确保运行指定数量的实例,并根据需要自动调整数量。

    副本管理支持 Kubernetes 集群中的高效负载均衡、滚动更新和自我修复功能。

  • ReplicaSet

    ReplicaSet(旨在)维持任何给定时间内运行的一组副本 Pod。

    [+]

    诸如 Deployment 之类的工作负载对象使用 ReplicaSet 来确保根据该 ReplicaSet 的规范,在集群中运行着配置数量的 Pod

  • ReplicationController

    一种工作负载管理对象,用于管理副本应用,确保特定数量的 Pod 实例处于运行状态。

    [+]

    控制平面可确保定义数量的 Pod 处于运行状态,即使某些 Pod 失败、您手动删除了 Pod,或者因失误启动了过多 Pod,它也能自动调节。

    说明

    ReplicationController 已弃用。请参阅类似的 Deployment
  • 资源 (Resource - 基础设施)

    提供给一个或多个 节点 的能力(如 CPU、内存、GPU 等),并供运行在这些节点上的 Pod 使用。

    Kubernetes 也使用“资源”一词来描述 API 资源

    [+]

    计算机提供基础硬件设施:处理能力、存储内存、网络等。这些资源容量有限,以适用于该资源的单位(CPU 数量、内存字节数等)来衡量。Kubernetes 抽象出通用的资源供工作负载分配使用,并利用操作系统原语(例如 Linux cgroups)来管理工作负载对资源的使用。

    您还可以使用动态资源分配 (Dynamic Resource Allocation) 来自动管理复杂的资源分配。

  • ResourceClaim

    描述工作负载所需的资源,例如 设备。ResourceClaim 用于动态资源分配 (DRA),以提供对特定资源的访问权限。

    [+]

    ResourceClaim 可以由工作负载操作员创建,也可以由 Kubernetes 根据 ResourceClaimTemplate 生成。

  • ResourceClaimTemplate

    定义 Kubernetes 用于创建 ResourceClaims 的模板。ResourceClaimTemplate 用于动态资源分配 (DRA),以提供针对每个 Pod 或每个 PodGroup 对独立且相似资源的访问权限

    [+]

    当工作负载规范中引用了 ResourceClaimTemplate 时,Kubernetes 会根据模板自动创建 ResourceClaim 对象。每个 ResourceClaim 都绑定到特定的 Pod 或 PodGroup。当 Pod 终止或 PodGroup 被删除时,Kubernetes 会删除相应的 ResourceClaim。PodGroup ResourceClaimTemplate 需要启用 DRAWorkloadResourceClaims 特性。

  • ResourceQuota (资源配额)

    用于限制每个 命名空间 中资源消耗总量的对象。

    [+]

    ResourceQuota 可以限制命名空间内按类型创建的 API 资源 的数量,也可以设定在该命名空间(及其内部对象)代表下可以消耗的基础设施资源的总量上限。

  • ResourceSlice

    表示连接到节点的一个或多个基础设施资源,例如 设备。驱动程序负责在集群中创建和管理 ResourceSlice。ResourceSlice 用于动态资源分配 (DRA)

    [+]

    当创建 ResourceClaim 时,Kubernetes 使用 ResourceSlice 来查找能够满足该申领要求的资源访问权限的节点。Kubernetes 将资源分配给 ResourceClaim,并将 Pod 调度到可以访问这些资源的节点上。

  • Reviewer (评审者)

    负责审查项目某部分代码的质量和正确性的人员。

    [+]

    评审者通常精通代码库和软件工程原则。评审者权限的范围限定在代码库的特定部分。

  • Secret (密钥)

    用于存储密码、OAuth 令牌和 SSH 密钥等敏感信息。

    [+]

    Secret 让您可以更好地控制敏感信息的使用方式,并降低意外泄露的风险。Secret 值以 base64 编码字符串形式存储,默认情况下未加密,但可以配置为静态加密

    Pod 可以通过多种方式引用 Secret,例如作为卷挂载或环境变量。Secret 专为机密数据设计,而 ConfigMap 则专为非机密数据设计。

  • Security Context (安全上下文)

    securityContext 字段为 Pod容器 定义权限和访问控制设置。

    [+]

    securityContext 中,您可以定义:进程运行时的用户、进程运行时的组以及权限设置。您还可以配置安全策略(例如:SELinux、AppArmor 或 seccomp)。

    PodSpec.securityContext 设置适用于 Pod 中的所有容器。

  • Selector (选择器)

    允许用户根据标签来筛选 API 资源 列表。

    [+]

    当查询资源列表并按标签进行过滤时,会应用选择器。

  • Service (服务)

    一种用于暴露集群中作为一个或多个 Pod 运行的网络应用程序的方法。

    [+]

    Service 目标的一组 Pod(通常)由选择器决定。如果添加或删除了更多 Pod,匹配选择器的 Pod 集合也会相应更改。Service 确保网络流量能够导向当前工作负载对应的这组 Pod。

    Kubernetes Service 使用 IP 网络(IPv4、IPv6 或两者兼有),或者引用域名系统 (DNS) 中的外部名称。

    Service 抽象启用了其他机制,例如 Ingress 和 Gateway。

  • Service Catalog

    一种曾有的扩展 API,它使在 Kubernetes 集群中运行的应用程序能够轻松使用外部托管软件产品,例如云提供商提供的数据存储服务。

    [+]

    它提供了一种列出、预置并绑定外部托管服务的方法,而无需详细了解这些服务是如何创建或管理的。

  • ServiceAccount (服务账号)

    Pod 中运行的进程提供身份标识。

    [+]

    当 Pod 内的进程访问集群时,它们会被 API 服务器认证为特定的服务账号,例如 default。创建 Pod 时,如果您未指定服务账号,它将自动分配在同一命名空间下的默认服务账号。

  • Shuffle-sharding (洗牌分片)

    一种将请求分配给队列的技术,比简单的对队列数量取模哈希提供了更好的隔离性。

    [+]

    我们通常关心如何将不同的请求流隔离开来,以防止高强度流量挤占低强度流量。将请求放入队列的一种简单方法是根据请求的某些特征进行哈希处理,并对队列数量取模,从而获得要使用的队列索引。哈希函数使用与流量一致的请求特征作为输入。例如,在互联网中,这通常是源地址和目的地址、协议以及源端口和目的端口的五元组。

    那种简单的基于哈希的方案有一个属性,即任何高强度流量都会挤占所有哈希到相同队列的低强度流量。为大量流量提供良好的隔离需要大量的队列,这存在问题。Shuffle-sharding 是一种更灵活的技术,可以更好地将低强度流量与高强度流量隔离开。Shuffle-sharding 的术语使用了从牌堆中发牌的比喻;每个队列都是一张比喻意义上的牌。Shuffle-sharding 技术首先哈希请求的流标识特征,产生一个具有几十位或更多位的哈希值。然后将该哈希值用作熵源来洗牌,并发出一手牌(队列)。检查所有发出的队列,并将请求放入检查过队列中长度最短的一个。在手牌数量适中的情况下,检查所有发出的牌成本不高,且给定的低强度流量有很大机会避开特定高强度流量的影响。如果手牌数量很大,检查队列的成本就很高,且低强度流量更难避开一组高强度流量的集体影响。因此,手牌数量的选择应审慎。

  • Sidecar Container (边车容器)

    一个或多个通常在任何应用容器运行前启动的 容器

    [+]

    边车容器类似于常规应用容器,但目的不同:边车为主要应用容器提供 Pod 本地的服务。与Init 容器不同,边车容器在 Pod 启动后会持续运行。

    阅读 Sidecar 容器获取更多信息。

  • SIG (Special Interest Group - 特别兴趣小组)

    共同管理 Kubernetes 开源项目更广泛部分中的某一项持续工作或方面的社区成员

    [+]

    SIG 内部的成员在推进特定领域(如架构、API 机制或文档)方面有着共同的兴趣。SIG 必须遵循 SIG 治理准则,但可以拥有自己的贡献政策和沟通渠道。

    更多信息,请参阅 kubernetes/community 仓库以及当前的 SIG 和工作组 列表。

  • Spec (规范)

    定义了每个对象(如 Pod 或 Service)应如何配置及其期望状态。

    [+]

    几乎每个 Kubernetes 对象都包含两个嵌套的对象字段来管理对象的配置:对象 Spec 和对象 Status。对于拥有 Spec 的对象,您必须在创建对象时进行设置,提供您希望该资源具有的特性描述:其期望状态。

    它因 Pod、StatefulSet 和 Service 等不同对象而异,详细说明了容器、卷、副本、端口以及每个对象类型特有的其他规范。此字段封装了 Kubernetes 应为所定义对象维持的状态。

  • StatefulSet

    管理一组 Pod 的部署和扩缩容,并提供关于这些 Pod 的顺序性和唯一性的保证

    [+]

    Deployment 一样,StatefulSet 管理基于相同容器规范的 Pod。与 Deployment 不同的是,StatefulSet 为其每个 Pod 维护了一个固定的标识。这些 Pod 由相同的规范创建,但并非可互换的:每个 Pod 都有一个在任何调度过程中始终保持的持久标识符。

    如果您想使用存储卷为您的工作负载提供持久化,可以将 StatefulSet 作为解决方案的一部分。虽然 StatefulSet 中的各个 Pod 容易发生故障,但持久化的 Pod 标识符使得将现有卷匹配到替换故障 Pod 的新 Pod 变得更加容易。

  • Static Pod (静态 Pod)

    由特定节点上的 kubelet 守护进程直接管理的 pod

    [+]

    API 服务器不会观察到它。

    静态 Pod 不支持 临时容器

  • Storage Class (存储类)

    StorageClass 提供了一种让管理员描述不同可用存储类型的方法。

    [+]

    StorageClass 可以映射到服务质量级别、备份策略或由集群管理员确定的任意策略。每个 StorageClass 都包含 provisionerparametersreclaimPolicy 字段,这些字段在需要动态预置属于该类的 持久卷 (Persistent Volume) 时使用。用户可以使用 StorageClass 对象的名称来请求特定的类。

  • sysctl

    sysctl 是一个半标准化的接口,用于读取或更改正在运行的 Unix 内核属性。

    [+]

    在类 Unix 系统上,sysctl 既是管理员用于查看和修改这些设置的工具名称,也是该工具所使用的系统调用。

    容器运行时和网络插件可能依赖于以特定方式设置的 sysctl 值。

  • Taint (污点)

    一个核心对象,包含三个必需属性:键 (key)、值 (value) 和效果 (effect)。污点阻止将 Pod 调度到节点或节点组上。

    [+]

    污点和容忍度 (tolerations) 协同工作,以确保 Pod 不会被调度到不合适的节点上。一个或多个污点被施加到节点上。节点应仅调度具有与已配置污点相匹配的容忍度的 Pod。

  • Toleration (容忍度)

    一个核心对象,包含三个必需属性:键 (key)、值 (value) 和效果 (effect)。容忍度允许将 Pod 调度到具有匹配污点的节点或节点组上。

    [+]

    容忍度和污点协同工作,以确保 Pod 不会被调度到不合适的节点上。一个或多个容忍度被应用到 pod 上。容忍度表示该 pod 被允许(但不强制要求)调度到具有匹配污点的节点或节点组上。

  • UID

    Kubernetes 系统生成的用于唯一标识对象的字符串。

    [+]

    在 Kubernetes 集群的整个生命周期中创建的每个对象都拥有唯一的 UID。它旨在区分相似实体的历史记录。

  • Upstream (上游 - 消歧义)

    可能指:核心 Kubernetes 或派生出某个仓库的源仓库。

    [+]
    • Kubernetes 社区中:对话中通常使用 upstream 来指代核心 Kubernetes 代码库,通用生态系统、其他代码或第三方工具都依赖于它。例如,社区成员可能会建议将某功能移动到上游,以便它进入核心代码库,而不是保留在插件或第三方工具中。
    • GitHubgit 中:惯例是将源仓库称为 upstream,而派生的仓库被视为 downstream(下游)。
  • user namespace (用户命名空间)

    一种模拟 root 的内核功能,用于“无根容器 (rootless containers)”。

    [+]

    用户命名空间是一种 Linux 内核功能,它允许非 root 用户模拟超级用户(“root”)权限,例如为了在容器外不是超级用户的情况下运行容器。

    用户命名空间对于减轻潜在的容器逃逸攻击造成的损害非常有效。

    在用户命名空间的上下文中,该命名空间是 Linux 内核功能,而不是 Kubernetes 意义上的 命名空间

  • Volume (卷)

    包含数据的目录,可供 Pod 中的 容器 访问。

    [+]

    Kubernetes 卷的生命周期与包含它的 Pod 一样长。因此,卷的存活时间超过了 Pod 内运行的任何容器,并且卷中的数据在容器重启后得以保留。

    更多信息请参阅存储

  • Volume Plugin (卷插件)

    卷插件支持在 Pod 中集成存储。

    [+]

    卷插件允许您附加和挂载存储卷供 Pod 使用。卷插件可以是 in-tree(树内)或 out-of-tree(树外)。In-tree 插件是 Kubernetes 代码仓库的一部分,并遵循其发布周期。Out-of-tree 插件则独立开发。

  • Watch (监视)

    一个动词,用于以流的形式跟踪 Kubernetes 中对象的更改。它用于高效地检测更改。

    [+]

    一个动词,用于以流的形式跟踪 Kubernetes 中对象的更改。Watch 允许高效地检测更改;例如,需要知道 ConfigMap 何时更改的 控制器 可以使用 watch 而不是轮询。

    更多信息请参阅 API 概念中的高效检测更改

  • WG (Working Group - 工作组)

    为委员会、SIG 或跨 SIG 工作促进短期、窄领域或解耦项目的讨论和/或实施。

    [+]

    工作组是一种组织人员以完成离散任务的方式。

    更多信息,请参阅 kubernetes/community 仓库以及当前的 SIG 和工作组 列表。

  • Workload (工作负载)

    工作负载是在 Kubernetes 上运行的应用程序。

    [+]

    表示工作负载的不同类型或部分的各种核心对象包括 DaemonSet、Deployment、Job、ReplicaSet 和 StatefulSet 对象。

    例如,一个包含 Web 服务器和数据库的工作负载,可以在一个 StatefulSet 中运行数据库,并在一个 Deployment 中运行 Web 服务器。