此术语表旨在提供一份全面、标准化的 Kubernetes 术语列表。它既包含 Kubernetes 特有的技术术语,也包含提供有用背景信息的通用术语。
根据标签筛选术语
点击下方的 [+] 指示符,获取特定术语的详细解释。
一段拦截 Kubernetes API 服务器请求的代码,在对象持久化之前执行。
[+]准入控制器可以针对 Kubernetes API 服务器进行配置,并且可以是“验证型”、“变更型”或两者兼具。任何准入控制器都可以拒绝请求。变更型控制器可以修改它们准入的对象;验证型控制器则不能。
在 Kubernetes 中,亲和性是一组规则,用于向调度程序提示 Pod 的放置位置。
[+]亲和性有两种类型
这些规则是使用 Kubernetes 标签 (labels) 定义的,并使用在 Pod 中指定的 选择器 (selectors),根据你希望调度程序执行规则的严格程度,它们可以是必须的,也可以是首选的。
聚合层允许你在集群中安装额外的 Kubernetes 风格的 API。
[+]当你配置 Kubernetes API 服务器 以 支持额外 API 时,你可以添加 APIService 对象来“认领”Kubernetes API 中的 URL 路径。
Kubernetes API 中一组相关的路径。
[+]你可以通过更改 API 服务器的配置来启用或禁用每个 API 组。你也可以禁用或启用特定 资源 (resources) 的路径。API 组使扩展 Kubernetes API 变得更容易。API 组在 REST 路径和序列化 对象 (object) 的 apiVersion 字段中指定。
Kubernetes 类型系统中的一个实体,对应于 Kubernetes API 上的一个端点。资源通常代表一个 对象。某些资源代表对其他对象的操作,例如权限检查。
[+]每个资源代表 Kubernetes API 服务器上的一个 HTTP 端点 (URI),定义了该资源上对象或操作的模式。
API 服务器是 Kubernetes 控制平面 的一个组件,它对外提供 Kubernetes API。API 服务器是 Kubernetes 控制平面的前端。
[+]Kubernetes API 服务器的主要实现是 kube-apiserver。kube-apiserver 设计为水平扩展——即通过部署更多实例来进行扩展。你可以运行 kube-apiserver 的多个实例,并在这些实例之间平衡流量。
API 发起的驱逐是指你使用 驱逐 API (Eviction API) 创建 Eviction 对象,从而触发 Pod 优雅终止的过程。
你可以通过使用 kube-apiserver 的客户端(如 kubectl drain 命令)直接调用驱逐 API 来请求驱逐。当创建 Eviction 对象时,API 服务器会终止该 Pod。
API 发起的驱逐会遵循你配置的 PodDisruptionBudgets 和 terminationGracePeriodSeconds。
API 发起的驱逐与 节点压力驱逐 不同。
应用容器(或 app containers)是 Pod 中在任何 初始化容器 (init containers) 完成后启动的 容器。
[+]初始化容器允许你分离对于整体 工作负载 很重要,但不需要在应用容器启动后持续运行的初始化细节。如果 Pod 没有配置任何初始化容器,则该 Pod 中的所有容器都是应用容器。
负责应用程序高层设计的人员。
[+]架构师确保应用的实现方式能够以可扩展、可维护的方式与其周边组件进行交互。周边组件包括数据库、日志基础设施以及其他微服务。
在 Kubernetes 集群中编写应用程序的人员。
[+]应用程序开发人员专注于应用程序的某一部分。他们的关注范围在规模上可能会有很大差异。
运行各种容器化应用程序的层级。
能够审查并批准 Kubernetes 代码贡献的人员。
[+]代码审查侧重于代码质量和正确性,而审批侧重于贡献的整体可接受性。整体可接受性包括向后/向前兼容性、遵守 API 和标志约定、细微的性能和正确性问题、与系统其他部分的交互等。审批人的权限范围仅限于代码库的特定部分。审批人以前被称为维护者 (maintainers)。
用于验证对 Kubernetes 集群访问权限的加密安全文件。
[+]证书使 Kubernetes 集群内的应用程序能够安全地访问 Kubernetes API。证书用于验证客户端是否有权访问 API。
贡献者 (contributor) 将其贡献授予开源项目的条款。
[+]CLA 有助于解决涉及贡献材料和知识产权 (IP) 的法律纠纷。
提供云计算平台的企业或其他组织。
[+]云提供商,有时称为云服务提供商 (CSP),提供云计算平台或服务。
许多云提供商提供托管基础设施(也称为基础设施即服务或 IaaS)。在托管基础设施中,云提供商负责服务器、存储和网络,而你负责在其之上管理层级,例如运行 Kubernetes 集群。
你也可以找到作为托管服务的 Kubernetes;有时称为平台即服务,或 PaaS。在托管 Kubernetes 中,你的云提供商负责 Kubernetes 控制平面,以及 节点 (nodes) 和它们所依赖的基础设施:网络、存储,以及可能包括负载均衡器等其他元素。
一组称为 节点 (nodes) 的工作机器,用于运行容器化应用程序。每个集群至少有一个工作节点。
[+]设计涉及一个或多个 Kubernetes 集群的基础设施的人员。
[+]集群架构师关注分布式系统的最佳实践,例如:高可用性和安全性。
基础设施层提供并维护虚拟机、网络、安全组等。
管理 Kubernetes 集群所涉及的工作:管理日常运营,以及协调升级。
[+]集群操作的工作示例包括:部署新节点以扩展集群;执行软件升级;实施安全控制;添加或删除存储;配置集群网络;管理整个集群的可观测性;以及响应事件。
配置、控制和监控集群的人员。
[+]他们的主要职责是保持集群正常运行,这可能涉及周期性的维护活动或升级。
开发并向 Kubernetes 开源代码库贡献代码的人员。
[+]他们也是活跃的 社区成员,参与一个或多个 特殊兴趣小组 (SIG)。
一种旨在实现快速、可移植且执行安全的通用表达式语言。
[+]在 Kubernetes 中,CEL 可用于运行查询和执行细粒度过滤。例如,你可以将 CEL 表达式与 动态准入控制 一起使用来过滤请求中的特定字段,并与 动态资源分配 (DRA) 一起使用来根据特定属性选择资源。
条件是 Kubernetes 资源状态中的一个字段,描述了该资源的当前状态。
[+]条件为 Kubernetes 组件通信资源状态提供了一种标准化方式。每个条件都有一个 type、一个 status(True、False 或 Unknown),以及像 reason 和 message 这样的可选字段,用于提供更多细节。例如,Pod 可能具有 Ready、ContainersReady 或 PodScheduled 等条件。
一种用于以键值对形式存储非机密数据的 API 对象。Pod 可以将 ConfigMap 用作环境变量、命令行参数或 卷 (volume) 中的配置文件。
[+]ConfigMap 允许你将特定于环境的配置与 容器镜像 分离,从而使应用程序易于移植。
一种轻量级且可移植的可执行镜像,包含软件及其所有依赖项。
[+]容器将应用程序与底层主机基础设施分离开来,使部署在不同的云或操作系统环境中变得更容易,并且更容易进行扩展。运行在容器内部的应用程序称为容器化应用程序。将这些应用程序及其依赖项捆绑到容器镜像中的过程称为容器化。
使 Kubernetes 能够有效运行容器的基本组件。它负责管理 Kubernetes 环境中容器的执行和生命周期。
[+]Kubernetes 支持容器运行时,例如 containerd、CRI-O,以及任何其他 Kubernetes CRI(容器运行时接口) 的实现。
容器存储接口 (CSI) 定义了一个向容器公开存储系统的标准接口。
[+]CSI 允许供应商为 Kubernetes 创建自定义存储插件,而无需将其添加到 Kubernetes 代码库中(树外插件)。要使用存储提供商的 CSI 驱动程序,你必须先 将其部署到你的集群中。然后,你就可以创建一个使用该 CSI 驱动程序的 存储类 (Storage Class)。
捐赠代码、文档或时间以帮助 Kubernetes 项目或社区的人。
[+]贡献包括拉取请求 (PR)、议题、反馈、参与 特殊兴趣小组 (SIG),或组织社区活动。
容器编排层,提供 API 和接口来定义、部署和管理容器的生命周期。
[+]此层由许多不同的组件组成,例如(但不限于)
这些组件可以作为传统的操作系统服务(守护进程)或作为容器运行。运行这些组件的主机历史上被称为 主节点 (masters)。
在 Kubernetes 中,控制器是控制循环,用于观察你的 集群 状态,然后在需要时进行更改或请求更改。每个控制器都试图将当前的集群状态移动到期望的状态。
[+]控制器通过 apiserver(控制平面 的一部分)观察集群的共享状态。
一些控制器也运行在控制平面内,提供对 Kubernetes 核心操作至关重要的控制循环。例如:deployment 控制器、daemonset 控制器、namespace 控制器和持久卷控制器(以及其他)都运行在 kube-controller-manager 内部。
一种允许你在 Kubernetes CRI 中使用 OCI 容器运行时的工具。
[+]CRI-O 是 容器运行时接口 (CRI) 的一种实现,旨在实现使用与开放容器倡议 (OCI) 运行时规范 兼容的 容器 运行时。
部署 CRI-O 允许 Kubernetes 使用任何符合 OCI 的运行时作为容器运行时来运行 Pod,并从远程仓库获取 OCI 容器镜像。
提供 CPU、内存、网络和存储等容量的层级,以便容器可以运行并连接到网络。
一种管理副本应用程序的 API 对象,通常通过运行没有本地状态的 Pod 来实现。
[+]每个副本由一个 Pod 代表,并且 Pod 分布在集群的 节点 之间。对于确实需要本地状态的工作负载,请考虑使用 StatefulSet。
集群中可与动态资源分配 (DRA) 一起使用的 设备 类别。
[+]管理员或设备所有者使用 DeviceClasses 来定义一组可以被认领并在工作负载中使用的设备。通过创建 ResourceClaims 并过滤 DeviceClass 中的特定设备参数来认领设备。
有关更多信息,请参阅 动态资源分配
中断是指导致一个或多个 Pod 停止服务的事件。中断对依赖于受影响 Pod 的工作负载管理 资源(例如 Deployment)有影响。
[+]如果你作为集群操作员,销毁了一个属于应用程序的 Pod,Kubernetes 将其称为自愿中断。如果 Pod 因为节点故障或影响更广泛故障域的停机而离线,Kubernetes 将其称为非自愿中断。
参阅 中断 了解更多信息。
Dockershim 是 Kubernetes 1.23 及更早版本中的一个组件。它允许 kubelet 与 Docker Engine 进行通信。
[+]从 1.24 版本开始,dockershim 已从 Kubernetes 中移除。更多信息,请参阅 Dockershim 常见问题解答。
可能指代:Kubernetes 生态系统中依赖于核心 Kubernetes 代码库或派生(forked)仓库的代码。
[+]Kubernetes 提供的一种将 Pod 和容器的字段值暴露给容器内运行的代码的机制。
[+]有时容器需要了解关于自身的信息,而无需修改直接将其与 Kubernetes 耦合的容器代码,这非常有用。
Kubernetes Downward API 允许容器获取关于自身或其在 Kubernetes 集群中上下文的信息。容器中的应用程序可以访问这些信息,而无需作为 Kubernetes API 的客户端进行操作。
有两种方式可以将 Pod 和容器字段暴露给正在运行的容器
downwardAPI 卷这两种暴露 Pod 和容器字段的方式统称为 *downward API*。
表示一段时间长度的字符串值。
[+](Kubernetes) 持续时间的格式基于 Go 编程语言中的 time.Duration 类型。
在通过持续时间进行配置的 Kubernetes API 中,该值表现为非负整数序列与时间单位后缀的组合。可以包含多个时间量,持续时间即这些时间量的总和。有效的时间单位包括 "ns"、"µs"(或 "us")、"ms"、"s"、"m" 和 "h"。
例如:5s 表示五秒的持续时间,1m30s 表示一分三十秒的持续时间。
允许用户请求自动创建存储 卷。
[+]动态配置消除了集群管理员预先配置存储的需求。相反,它会根据用户请求自动配置存储。动态卷配置基于一个 API 对象 StorageClass,该对象引用了一个负责配置 卷 的 卷插件 以及传递给该插件的参数集合。
一个已弃用的 API,表示 Service 的所有端点集合。
[+]从 v1.21 开始,Kubernetes 使用 EndpointSlices 而不是 Endpoints;原始的 Endpoints API 由于可扩展性方面的考量已被弃用。
要了解关于 Endpoints 的更多信息,请阅读 Endpoints。
EndpointSlices 跟踪后端端点的 IP 地址。EndpointSlices 通常与 Service 相关联,且后端端点通常代表 Pod。
[+]一个 Service 可以由多个 Pod 支持。Kubernetes 用与该 Service 相关联的一组 EndpointSlices 来表示 Service 的后端端点。后端端点通常(但并非总是)是集群中运行的 Pod。
控制平面通常会自动为你管理 EndpointSlices。然而,对于没有指定 选择器 (selectors) 的 Services,EndpointSlices 也可以手动定义。
如果你想调查一个运行出现问题的 Pod,可以向该 Pod 添加一个临时容器并进行诊断。临时容器没有 资源 或调度保证,你不应该使用它们来运行工作负载本身的任何部分。
临时容器不支持 静态 Pod (static pods)。
一种 Kubernetes 对象,用于描述集群中的状态变更或显著事件。
[+]事件的保留时间有限,触发器和消息可能会随时间演变。事件消费者不应依赖于具有特定原因的事件时间来反映一致的基础触发器,也不应依赖于具有该原因的事件的持续存在。
事件应被视为信息性的、尽力而为的补充数据。
在 Kubernetes 中,审计 (auditing) 会生成另一种类型的事件记录(API 组 audit.k8s.io)。
驱逐是在节点上终止一个或多个 Pod 的过程。
[+]终结器是命名空间的键,用于告知 Kubernetes 在完全删除被标记为删除的 资源 之前必须等待特定条件满足。终结器会提醒 控制器 清理被删除对象所拥有的资源。
[+]当你告知 Kubernetes 删除一个指定了终结器的对象时,Kubernetes API 会通过填充 .metadata.deletionTimestamp 将该对象标记为删除,并返回 202 状态码(HTTP "Accepted")。在控制平面或其他组件执行终结器定义的操作时,目标对象保持在终止状态。这些操作完成后,控制器会从目标对象中移除相关的终结器。当 metadata.finalizers 字段为空时,Kubernetes 认为删除完成并删除该对象。
你可以使用终结器来控制资源的 垃圾回收。例如,你可以定义一个终结器,在控制器删除正在被终结的对象之前清理相关的 API 资源 或基础设施。
FlexVolume 是一个用于创建树外(out-of-tree)卷插件的已弃用接口。容器存储接口 (CSI) 是一个更新的接口,解决了 FlexVolume 的若干问题。
[+]FlexVolume 允许用户编写自己的驱动程序并为 Kubernetes 中的卷添加支持。FlexVolume 驱动程序二进制文件和依赖项必须安装在主机上。这需要 root 权限。Storage SIG 建议尽可能实施 CSI 驱动程序,因为它解决了 FlexVolume 的限制。
垃圾回收是 Kubernetes 用于清理集群资源的各种机制的统称。
[+]Kubernetes 使用垃圾回收来清理诸如 未使用的容器和镜像、失败的 Pod、目标资源所拥有的对象、已完成的 Job 以及过期或失败的资源。
用于在 Kubernetes 中建模服务网络的一系列 API 类型。
[+]Gateway API 提供了一系列可扩展的、面向角色的、协议感知的 API 类型,用于在 Kubernetes 中建模服务网络。
一种可用 Helm 工具管理的预配置 Kubernetes 配置包。
[+]Chart 提供了一种创建和共享 Kubernetes 应用的可重现方式。单个 Chart 可用于部署简单的内容(如 memcached Pod),或复杂的内容(如带有 HTTP 服务器、数据库、缓存等的完整 Web 应用栈)。
一种根据目标 资源 利用率或自定义指标目标自动缩放 Pod 副本数量的 对象。
[+]HorizontalPodAutoscaler (HPA) 通常与 Deployments 或 ReplicaSets 一起使用。它不能应用于无法扩缩的对象,例如 DaemonSets。
HostAliases 是要注入到 Pod hosts 文件中的 IP 地址与主机名之间的映射。
[+]HostAliases 是一个可选的主机名和 IP 地址列表,如果指定,它们将被注入到 Pod 的 hosts 文件中。这仅适用于非 hostNetwork Pod。
不可变基础设施是指计算机基础设施(虚拟机、容器、网络设备)在部署后即不可更改。
[+]不可变性可以通过自动化进程覆盖未经授权的更改来强制执行,或者通过系统从根本上不允许更改来执行。容器 是不可变基础设施的一个很好的例子,因为对容器的持久性更改只能通过创建新版本的容器或根据镜像重新创建现有容器来实现。
通过防止或识别未经授权的更改,不可变基础设施使识别和缓解安全风险变得更容易。操作此类系统变得直截了当得多,因为管理员可以对其做出预设——毕竟,他们知道没人会犯错或进行未沟通的更改。不可变基础设施与“基础设施即代码”齐头并进,其中创建基础设施所需的所有自动化都存储在版本控制系统(如 Git)中。这种不可变性和版本控制的结合意味着对系统的每一次授权更改都有持久的审计日志。
一种管理集群中服务外部访问的 API 对象,通常为 HTTP。
[+]Ingress 可以提供负载均衡、SSL 终止和基于名称的虚拟主机。
一个或多个在任何应用容器运行之前必须成功运行完成的初始化 容器。
[+]初始化(init)容器与常规应用容器类似,但有一个区别:init 容器必须在应用容器启动前运行完成。Init 容器按顺序运行:每个 init 容器必须在下一个 init 容器开始前成功运行完成。
与 边车容器 (sidecar containers) 不同,init 容器在 Pod 启动后不会继续运行。
更多信息,请阅读 init 容器。
一个开放平台(非 Kubernetes 专属),提供了一种统一的方式来集成微服务、管理流量、强制执行策略并聚合遥测数据。
[+]添加 Istio 无需更改应用程序代码。它是服务与网络之间的一层基础设施,当与服务部署结合使用时,通常被称为服务网格 (service mesh)。Istio 的控制平面抽象了底层集群管理平台(可能是 Kubernetes、Mesosphere 等)。
一种在两方之间传输声明的表示方式。
[+]JWT 可以进行数字签名和加密。Kubernetes 使用 JWT 作为身份验证令牌,以验证希望在集群中执行操作的实体的身份。
kOps 不仅可以帮助你创建、销毁、升级和维护生产级的、高可用的 Kubernetes 集群,还可以配置必要的基础设施。
kOps 是一个自动化配置系统
kube-proxy 是一个运行在集群每个 节点 上的网络代理,实现了部分 Kubernetes Service 概念。
[+]kube-proxy 在节点上维护网络规则。这些规则允许网络会话与集群内外的 Pod 进行通信。
如果操作系统具备包过滤层并且可用,kube-proxy 会使用它。否则,kube-proxy 会自行转发流量。
通过 RESTful 接口提供 Kubernetes 功能并存储集群状态的应用程序。
[+]Kubernetes 资源和“意图记录”都作为 API 对象存储,并通过对 API 的 RESTful 调用进行修改。该 API 允许以声明式的方式管理配置。用户可以直接与 Kubernetes API 交互,或通过 kubectl 等工具进行交互。核心 Kubernetes API 非常灵活,也可以扩展以支持自定义资源。
由第三方供应商维护的软件产品。
[+]托管服务的一些示例包括 AWS EC2、Azure SQL Database 和 GCP Pub/Sub,但它们可以是应用程序使用的任何软件产品。
K8s 社区中持续活跃的 贡献者。
[+]成员可以通过 GitHub 团队被分配 issue 和 PR,并参与 特别兴趣小组 (SIGs)。成员的 PR 会自动运行预提交测试。成员应保持作为社区的活跃贡献者。
用于在本地运行 Kubernetes 的工具。
[+]Minikube 在你计算机上的虚拟机内运行一个一体化或多节点的本地 Kubernetes 集群。你可以使用 Minikube 在 学习环境中尝试 Kubernetes。
Operator 模式 是一种将 控制器 链接到一个或多个自定义资源的设计模式。
[+]你可以通过向集群添加控制器来扩展 Kubernetes,超越 Kubernetes 本身自带的内置控制器。
如果一个运行中的应用程序充当控制器,并拥有针对控制平面中定义的自定义资源执行任务的 API 访问权限,这就是 Operator 模式的一个示例。
申请 PersistentVolume 中定义的存储 资源,以便存储可以作为卷挂载到 容器 中。
[+]指定存储量、访问方式(只读、读写和/或独占)以及回收方式(保留、回收或删除)。存储本身的详细信息在 PersistentVolume 对象中描述。
自定义 Kubernetes 平台以满足其项目需求的人。
[+]例如,平台开发者可以使用 自定义资源 (Custom Resources) 或 通过聚合层扩展 Kubernetes API 来为其 Kubernetes 实例添加功能,专门针对其应用程序。一些平台开发者也是 贡献者,并开发贡献给 Kubernetes 社区的扩展。其他人则开发闭源的商业或特定站点扩展。
最小且最简单的 Kubernetes 对象。Pod 代表你集群中一组正在运行的 容器。
[+]Pod 通常配置为运行单个主容器。它也可以运行添加日志记录等补充功能的辅助边车容器。Pod 通常由 Deployment 管理。
一种旧的 Kubernetes API,在 Pod 创建和更新期间强制执行安全限制。
[+]PodSecurityPolicy 自 Kubernetes v1.21 起被弃用,并在 v1.25 中移除。作为替代方案,请使用 Pod 安全准入 (Pod Security Admission) 或第三方准入插件。
一种定义用于创建 Pod 的模板的 API 对象。PodTemplate API 也嵌入在用于工作负载管理的 API 定义中,例如 Deployment 或 StatefulSets。
[+]Pod 模板允许你定义通用元数据(例如标签或新 Pod 名称的模板),并指定 Pod 的期望状态。工作负载管理 控制器使用 Pod 模板(嵌入到另一个对象中,例如 Deployment 或 StatefulSet)来定义和管理一个或多个 Pod。当基于同一模板可以存在多个 Pod 时,这些被称为 副本 (replicas)。虽然你可以直接创建 PodTemplate 对象,但你很少需要这样做。
PriorityClass 是一种命名的调度优先级类,应分配给该类中的 Pod。
[+]PriorityClass 是一个非命名空间对象,将名称映射到用于 Pod 的整数优先级。名称在 metadata.name 字段中指定,优先级值在 value 字段中指定。优先级范围从 -2147483648 到 1000000000(含)。值越高,优先级越高。
在计算中,代理是一个充当远程服务中介的服务器。
[+]客户端与代理交互;代理将客户端的数据复制到实际服务器;实际服务器回复代理;代理将实际服务器的回复发送给客户端。
kube-proxy 是一个运行在集群每个节点上的网络代理,实现了部分 Kubernetes Service 概念。
你可以将 kube-proxy 作为普通用户空间代理服务运行。如果你的操作系统支持,你可以改为以混合模式运行 kube-proxy,该模式使用更少的系统资源达到相同的整体效果。
使用 SI 后缀的小数或大数的整数表示法。
[+]Quantity 是使用带有 SI 后缀的紧凑整数表示法表示小数字或大数字的方式。分数使用 milli 单位表示,而大数字可以使用 kilo、mega 或 giga 单位表示。
例如,数字 1.5 表示为 1500m,而数字 1000 可以表示为 1k,1000000 表示为 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)。
管理授权决策,允许管理员通过 Kubernetes API 动态配置访问策略。
[+]RBAC 使用四种 Kubernetes 对象
更多信息,请参阅 RBAC。
ReplicaSet(旨在)维持任何给定时间内运行的一组副本 Pod。
[+]诸如 Deployment 之类的工作负载对象使用 ReplicaSet 来确保根据该 ReplicaSet 的规范,在集群中运行着配置数量的 Pod。
一种工作负载管理对象,用于管理副本应用,确保特定数量的 Pod 实例处于运行状态。
[+]控制平面可确保定义数量的 Pod 处于运行状态,即使某些 Pod 失败、您手动删除了 Pod,或者因失误启动了过多 Pod,它也能自动调节。
描述工作负载所需的资源,例如 设备。ResourceClaim 用于动态资源分配 (DRA),以提供对特定资源的访问权限。
[+]ResourceClaim 可以由工作负载操作员创建,也可以由 Kubernetes 根据 ResourceClaimTemplate 生成。
定义 Kubernetes 用于创建 ResourceClaims 的模板。ResourceClaimTemplate 用于动态资源分配 (DRA),以提供针对每个 Pod 或每个 PodGroup 对独立且相似资源的访问权限。
[+]当工作负载规范中引用了 ResourceClaimTemplate 时,Kubernetes 会根据模板自动创建 ResourceClaim 对象。每个 ResourceClaim 都绑定到特定的 Pod 或 PodGroup。当 Pod 终止或 PodGroup 被删除时,Kubernetes 会删除相应的 ResourceClaim。PodGroup ResourceClaimTemplate 需要启用 DRAWorkloadResourceClaims 特性。
表示连接到节点的一个或多个基础设施资源,例如 设备。驱动程序负责在集群中创建和管理 ResourceSlice。ResourceSlice 用于动态资源分配 (DRA)。
[+]当创建 ResourceClaim 时,Kubernetes 使用 ResourceSlice 来查找能够满足该申领要求的资源访问权限的节点。Kubernetes 将资源分配给 ResourceClaim,并将 Pod 调度到可以访问这些资源的节点上。
负责审查项目某部分代码的质量和正确性的人员。
[+]评审者通常精通代码库和软件工程原则。评审者权限的范围限定在代码库的特定部分。
一种将请求分配给队列的技术,比简单的对队列数量取模哈希提供了更好的隔离性。
[+]我们通常关心如何将不同的请求流隔离开来,以防止高强度流量挤占低强度流量。将请求放入队列的一种简单方法是根据请求的某些特征进行哈希处理,并对队列数量取模,从而获得要使用的队列索引。哈希函数使用与流量一致的请求特征作为输入。例如,在互联网中,这通常是源地址和目的地址、协议以及源端口和目的端口的五元组。
那种简单的基于哈希的方案有一个属性,即任何高强度流量都会挤占所有哈希到相同队列的低强度流量。为大量流量提供良好的隔离需要大量的队列,这存在问题。Shuffle-sharding 是一种更灵活的技术,可以更好地将低强度流量与高强度流量隔离开。Shuffle-sharding 的术语使用了从牌堆中发牌的比喻;每个队列都是一张比喻意义上的牌。Shuffle-sharding 技术首先哈希请求的流标识特征,产生一个具有几十位或更多位的哈希值。然后将该哈希值用作熵源来洗牌,并发出一手牌(队列)。检查所有发出的队列,并将请求放入检查过队列中长度最短的一个。在手牌数量适中的情况下,检查所有发出的牌成本不高,且给定的低强度流量有很大机会避开特定高强度流量的影响。如果手牌数量很大,检查队列的成本就很高,且低强度流量更难避开一组高强度流量的集体影响。因此,手牌数量的选择应审慎。
一个或多个通常在任何应用容器运行前启动的 容器。
[+]边车容器类似于常规应用容器,但目的不同:边车为主要应用容器提供 Pod 本地的服务。与Init 容器不同,边车容器在 Pod 启动后会持续运行。
阅读 Sidecar 容器获取更多信息。
共同管理 Kubernetes 开源项目更广泛部分中的某一项持续工作或方面的社区成员。
[+]SIG 内部的成员在推进特定领域(如架构、API 机制或文档)方面有着共同的兴趣。SIG 必须遵循 SIG 治理准则,但可以拥有自己的贡献政策和沟通渠道。
更多信息,请参阅 kubernetes/community 仓库以及当前的 SIG 和工作组 列表。
管理一组 Pod 的部署和扩缩容,并提供关于这些 Pod 的顺序性和唯一性的保证。
[+]与 Deployment 一样,StatefulSet 管理基于相同容器规范的 Pod。与 Deployment 不同的是,StatefulSet 为其每个 Pod 维护了一个固定的标识。这些 Pod 由相同的规范创建,但并非可互换的:每个 Pod 都有一个在任何调度过程中始终保持的持久标识符。
如果您想使用存储卷为您的工作负载提供持久化,可以将 StatefulSet 作为解决方案的一部分。虽然 StatefulSet 中的各个 Pod 容易发生故障,但持久化的 Pod 标识符使得将现有卷匹配到替换故障 Pod 的新 Pod 变得更加容易。
StorageClass 提供了一种让管理员描述不同可用存储类型的方法。
[+]StorageClass 可以映射到服务质量级别、备份策略或由集群管理员确定的任意策略。每个 StorageClass 都包含 provisioner、parameters 和 reclaimPolicy 字段,这些字段在需要动态预置属于该类的 持久卷 (Persistent Volume) 时使用。用户可以使用 StorageClass 对象的名称来请求特定的类。
一个核心对象,包含三个必需属性:键 (key)、值 (value) 和效果 (effect)。污点阻止将 Pod 调度到节点或节点组上。
[+]污点和容忍度 (tolerations) 协同工作,以确保 Pod 不会被调度到不合适的节点上。一个或多个污点被施加到节点上。节点应仅调度具有与已配置污点相匹配的容忍度的 Pod。
Kubernetes 系统生成的用于唯一标识对象的字符串。
[+]在 Kubernetes 集群的整个生命周期中创建的每个对象都拥有唯一的 UID。它旨在区分相似实体的历史记录。
一个动词,用于以流的形式跟踪 Kubernetes 中对象的更改。它用于高效地检测更改。
[+]一个动词,用于以流的形式跟踪 Kubernetes 中对象的更改。Watch 允许高效地检测更改;例如,需要知道 ConfigMap 何时更改的 控制器 可以使用 watch 而不是轮询。
更多信息请参阅 API 概念中的高效检测更改。
为委员会、SIG 或跨 SIG 工作促进短期、窄领域或解耦项目的讨论和/或实施。
[+]工作组是一种组织人员以完成离散任务的方式。
更多信息,请参阅 kubernetes/community 仓库以及当前的 SIG 和工作组 列表。
工作负载是在 Kubernetes 上运行的应用程序。
[+]表示工作负载的不同类型或部分的各种核心对象包括 DaemonSet、Deployment、Job、ReplicaSet 和 StatefulSet 对象。
例如,一个包含 Web 服务器和数据库的工作负载,可以在一个 StatefulSet 中运行数据库,并在一个 Deployment 中运行 Web 服务器。