词汇表
此词汇表旨在提供一个全面、标准化的 Kubernetes 术语列表。它包括 Kubernetes 特有的技术术语,以及提供有用上下文的更通用术语。
根据标签过滤术语
单击下面的 [+] 指示符以获取任何特定术语的更长解释。
在对象持久化之前拦截对 Kubernetes API 服务器请求的一段代码。
[+]准入控制器可为 Kubernetes API 服务器配置,可为“验证型”、“变更型”或两者兼有。任何准入控制器都可以拒绝请求。变更型控制器可以修改它们准入的对象;验证型控制器则不能。
聚合层允许你在集群中安装额外的 Kubernetes 风格的 API。
[+]当你配置 Kubernetes API 服务器 以 支持额外的 API 时,你可以添加 `APIService` 对象以“声明”Kubernetes API 中的 URL 路径。
- 也称为:资源
Kubernetes 类型系统中的实体,对应于 Kubernetes API 上的一个端点。资源通常表示一个 对象。某些资源表示对其他对象的操作,例如权限检查。
[+]每个资源表示 Kubernetes API 服务器上的一个 HTTP 端点(URI),定义了该资源上对象或操作的模式。
- 也称为:kube-apiserver
API 服务器是 Kubernetes 控制平面 的一个组件,它暴露 Kubernetes API。API 服务器是 Kubernetes 控制平面的前端。
[+]Kubernetes API 服务器的主要实现是 kube-apiserver。kube-apiserver 设计为水平扩展——也就是说,它通过部署更多实例来扩展。你可以运行多个 kube-apiserver 实例并在这些实例之间平衡流量。
API 发起的驱逐是你使用 驱逐 API 创建一个 `Eviction` 对象以触发优雅的 Pod 终止的过程。
[+]你可以通过使用 kube-apiserver 的客户端(例如 `kubectl drain` 命令)直接调用驱逐 API 来请求驱逐。当 `Eviction` 对象创建时,API 服务器终止 Pod。
API 发起的驱逐遵循你配置的 `PodDisruptionBudgets` 和 `terminationGracePeriodSeconds`。
API 发起的驱逐与 节点压力驱逐 不同。
- 有关更多信息,请参阅 API 发起的驱逐。
负责应用程序高级设计的人员。
[+]架构师确保应用程序的实现允许它以可伸缩、可维护的方式与其周围的组件交互。周围的组件包括数据库、日志基础设施和其他微服务。
编写在 Kubernetes 集群中运行的应用程序的人员。
[+]应用程序开发人员专注于应用程序的一部分。他们关注的范围大小可能差异很大。
- 运行各种容器化应用程序的层。 [+]
运行各种容器化应用程序的层。
可以审阅和批准 Kubernetes 代码贡献的人员。
[+]虽然代码审阅侧重于代码质量和正确性,但批准侧重于对贡献的整体接受。整体接受包括向后/向前兼容性、遵守 API 和标志约定、微妙的性能和正确性问题、与系统其他部分的交互等等。批准者状态限定在代码库的一部分。批准者以前被称为维护者。
用于验证对 Kubernetes 集群访问的加密安全文件。
[+]证书使 Kubernetes 集群内的应用程序能够安全地访问 Kubernetes API。证书验证客户端是否被允许访问 API。
设计涉及一个或多个 Kubernetes 集群的基础设施的人员。
[+]集群架构师关注分布式系统的最佳实践,例如:高可用性和安全性。
- 基础设施层提供并维护虚拟机、网络、安全组等。 [+]
基础设施层提供并维护虚拟机、网络、安全组等。
管理 Kubernetes 集群所需的工作:管理日常操作,以及协调升级。
[+]集群操作工作示例包括:部署新节点以扩缩集群;执行软件升级;实施安全控制;添加或移除存储;配置集群网络;管理集群范围的可观测性;以及响应事件。
配置、控制和监控集群的人员。
[+]他们的主要职责是保持集群正常运行,这可能涉及定期维护活动或升级。
说明
集群运维人员与扩展 Kubernetes API 的 Operator 模式 不同。开发代码并将其贡献给 Kubernetes 开源代码库的人员。
[+]他们也是积极的 社区成员,参与一个或多个 特别兴趣小组 (SIG)。
- 也称为:CEL
一种通用表达式语言,设计用于快速、便携和安全地执行。
[+]在 Kubernetes 中,CEL 可用于运行查询和执行细粒度过滤。例如,你可以将 CEL 表达式与 动态准入控制 一起使用以过滤请求中的特定字段,并与 动态资源分配 (DRA) 一起使用以根据特定属性选择资源。
一种轻量级、可移植的可执行镜像,包含软件及其所有依赖项。
[+]容器将应用程序与底层主机基础设施解耦,以便更容易地部署到不同的云或操作系统环境中,并更容易地进行扩展。在容器内部运行的应用程序称为容器化应用程序。将这些应用程序及其依赖项打包成容器镜像的过程称为容器化。
使 Kubernetes 能够有效运行容器的基本组件。它负责管理 Kubernetes 环境中容器的执行和生命周期。
[+]Kubernetes 支持的容器运行时包括 containerd、CRI-O 以及 Kubernetes CRI(容器运行时接口) 的任何其他实现。
容器存储接口 (CSI) 定义了一个标准接口,用于将存储系统暴露给容器。
[+]CSI 允许供应商为 Kubernetes 创建自定义存储插件,而无需将其添加到 Kubernetes 仓库(out-of-tree 插件)。要使用存储提供商的 CSI 驱动程序,你必须首先 将其部署到集群。然后,你将能够创建使用该 CSI 驱动程序的 Storage Class。
为 Kubernetes 项目或社区捐赠代码、文档或时间的人员。
[+]贡献包括拉取请求 (PRs)、问题、反馈、特别兴趣小组 (SIG) 参与或组织社区活动。
在 Kubernetes 中,控制器是控制循环,它们监视 集群 的状态,然后在需要时进行或请求更改。每个控制器都试图使当前集群状态更接近所需状态。
[+]控制器通过 apiserver(控制平面的一部分)监视集群的共享状态。
一些控制器也在控制平面内部运行,提供作为 Kubernetes 核心操作的控制循环。例如:Deployment 控制器、DaemonSet 控制器、Namespace 控制器和 Persistent Volume 控制器(以及其他控制器)都运行在 kube-controller-manager 中。
一个工具,允许你将 OCI 容器运行时与 Kubernetes CRI 结合使用。
[+]CRI-O 是 容器运行时接口 (CRI) 的实现,它使得能够使用与开放容器倡议 (OCI) 运行时规范兼容的容器运行时。
部署 CRI-O 允许 Kubernetes 使用任何符合 OCI 的运行时作为运行 Pod 的容器运行时,并从远程仓库拉取 OCI 容器镜像。
- 提供 CPU、内存、网络和存储等容量的层,以便容器可以运行并连接到网络。[+]
提供 CPU、内存、网络和存储等容量的层,以便容器可以运行并连接到网络。
一个 API 对象,用于管理复制的应用程序,通常通过运行没有本地状态的 Pod 来实现。
[+]每个副本由一个 Pod 表示,并且 Pod 分布在集群的 节点之间。对于确实需要本地状态的工作负载,请考虑使用 StatefulSet。
集群中可用于动态资源分配 (DRA) 的设备类别。
[+]管理员或设备所有者使用 DeviceClass 来定义一组可在工作负载中声明和使用的设备。通过创建 ResourceClaim 来声明设备,这些 ResourceClaim 会筛选 DeviceClass 中特定的设备参数。
有关更多信息,请参阅动态资源分配
中断是导致一个或多个 Pod 停止服务的事件。中断对依赖受影响 Pod 的工作负载管理资源(例如 Deployment)有影响。
[+]如果你作为集群操作员,销毁属于某个应用程序的 Pod,Kubernetes 将其称为 自愿中断。如果 Pod 因节点故障或影响更广泛故障区域的停机而离线,Kubernetes 将其称为 非自愿中断。
有关更多信息,请参阅中断。
Dockershim 是 Kubernetes 1.23 及更早版本的一个组件。它允许 kubelet 与 Docker Engine 通信。
[+]从 1.24 版本开始,dockershim 已从 Kubernetes 中移除。有关更多信息,请参阅 Dockershim 常见问题。
可能指:Kubernetes 生态系统中依赖核心 Kubernetes 代码库或分支代码库的代码。
[+]- 在 **Kubernetes 社区**:对话中经常使用 *下游* 指代依赖核心 Kubernetes 代码库的生态系统、代码或第三方工具。例如,Kubernetes 中的新功能可能会被*下游*应用程序采用以改善其功能。
- 在 **GitHub** 或 **git**:惯例是将分支仓库称为 *下游*,而源仓库则被视为 *上游*。
Kubernetes 暴露 Pod 和容器字段值给容器中运行的代码的机制。
[+]有时,容器需要了解自身信息,而无需修改容器代码使其直接与 Kubernetes 耦合。
Kubernetes downward API 允许容器使用关于自身或其在 Kubernetes 集群中上下文的信息。容器中的应用程序可以访问这些信息,而无需应用程序充当 Kubernetes API 的客户端。
有两种方法可以向运行中的容器暴露 Pod 和容器字段:
这两种暴露 Pod 和容器字段的方式统称为 *downward API*。
表示时间量的一个字符串值。
[+](Kubernetes)持续时间的格式基于 Go 编程语言中的
time.Duration
类型。在 Kubernetes API 中使用持续时间时,值表示为一系列非负整数与时间单位后缀的组合。你可以有多个时间量,持续时间是这些时间量的总和。有效的时间单位是“ns”、“µs”(或“us”)、“ms”、“s”、“m”和“h”。
例如:
5s
表示五秒的持续时间,1m30s
表示一分三十秒的持续时间。允许用户请求自动创建存储卷。
[+]动态供给消除了集群管理员预先供给存储的需要。相反,它根据用户请求自动供给存储。动态卷供给基于一个 API 对象 StorageClass,它引用一个用于供给卷的 卷插件以及要传递给该卷插件的一组参数。
Service 的一个端点是实现该 Service 的 Pod(或外部服务器)之一。
[+]对于带有选择器的 Service,EndpointSlice 控制器将自动创建一个或多个 EndpointSlice,给出选定端点 Pod 的 IP 地址。
EndpointSlice 也可以手动创建,以指示未指定选择器的 Service 的端点。
终结器是命名空间键,它告诉 Kubernetes 在完全删除标记为待删除的资源之前等待特定条件满足。终结器提醒控制器清理被删除对象拥有的资源。
[+]当你告诉 Kubernetes 删除一个已为其指定终结器的对象时,Kubernetes API 会通过填充
.metadata.deletionTimestamp
来标记该对象待删除,并返回202
状态码(HTTP "Accepted")。目标对象在终止状态下保持,而控制平面或其他组件执行由终结器定义的操作。这些操作完成后,控制器会从目标对象中删除相关的终结器。当metadata.finalizers
字段为空时,Kubernetes 认为删除完成并删除该对象。你可以使用终结器来控制资源的垃圾回收。例如,你可以定义一个终结器来清理相关的API 资源或基础设施,然后控制器再删除被终结的对象。
用于在 Kubernetes 中建模服务网络的 API 种类系列。
[+]Gateway API 提供了一系列可扩展、面向角色、协议感知的 API 种类,用于在 Kubernetes 中建模服务网络。
一个预配置的 Kubernetes 配置包,可以使用 Helm 工具进行管理。
[+]Chart 提供了一种可重复创建和共享 Kubernetes 应用程序的方式。单个 Chart 可以用于部署简单的东西,例如 memcached Pod,也可以部署复杂的东西,例如带有 HTTP 服务器、数据库、缓存等完整 Web 应用程序栈。
- 亦称:HPA
一个根据目标资源利用率或自定义指标目标自动扩缩 Pod 副本数量的对象。
[+]HorizontalPodAutoscaler (HPA) 通常与Deployment 或 ReplicaSet 一起使用。它不能应用于无法扩缩的对象,例如 DaemonSet。
HostAliases 是要注入到Pod 的 hosts 文件中的 IP 地址和主机名之间的映射。
[+]HostAliases 是一个可选的主机名和 IP 地址列表,如果指定,它们将被注入到 Pod 的 hosts 文件中。这仅适用于非 hostNetwork Pod。
不可变基础设施是指一旦部署后就不能更改的计算机基础设施(虚拟机、容器、网络设备)。
[+]不变性可以通过自动化过程来强制执行,该过程会覆盖未经授权的更改,或者通过一个系统来强制执行,该系统根本不允许更改。容器是不可变基础设施的一个很好的例子,因为对容器的持久更改只能通过创建容器的新版本或从其镜像重新创建现有容器来实现。
通过防止或识别未经授权的更改,不可变基础设施使识别和缓解安全风险变得更加容易。操作系统变得更加简单,因为管理员可以对其进行假设。毕竟,他们知道没有人犯错或忘记沟通更改。不可变基础设施与基础设施即代码携手并进,所有创建基础设施所需的自动化都存储在版本控制(例如 Git)中。不变性和版本控制的结合意味着系统所有授权更改都有一个持久的审计日志。
一个 API 对象,用于管理对集群中服务的外部访问,通常是 HTTP。
[+]Ingress 可以提供负载均衡、SSL 终止和基于名称的虚拟主机。
一个开放平台(非 Kubernetes 特有),提供统一的方式来集成微服务、管理流量、强制执行策略和聚合遥测数据。
[+]添加 Istio 不需要更改应用程序代码。它是服务和网络之间的一层基础设施,与服务部署结合使用时,通常被称为服务网格。Istio 的控制平面抽象了底层集群管理平台,该平台可以是 Kubernetes、Mesosphere 等。
一种表示在双方之间传输声明的方式。
[+]JWT 可以进行数字签名和加密。Kubernetes 使用 JWT 作为身份验证令牌,以验证希望在集群中执行操作的实体的身份。
[+]kOps
不仅可以帮助你创建、销毁、升级和维护生产级、高可用的 Kubernetes 集群,它还将提供必要的云基础设施。说明
目前官方支持 AWS (Amazon Web Services),DigitalOcean、GCE 和 OpenStack 处于测试支持阶段,Azure 处于 Alpha 阶段。kOps
是一个自动化部署系统- 全自动安装
- 使用 DNS 识别集群
- 自修复:一切都在 Auto-Scaling Group 中运行
- 支持多种操作系统(Amazon Linux、Debian、Flatcar、RHEL、Rocky 和 Ubuntu)
- 高可用性支持
- 可以直接部署,或生成 Terraform 清单
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 社区中持续活跃的贡献者。
[+]成员可以分配到问题和 PR,并通过 GitHub 团队参与特别兴趣小组 (SIG)。预提交测试会自动为成员的 PR 运行。成员应保持对社区的积极贡献。
Operator 模式是一种系统设计,它将控制器链接到一个或多个自定义资源。
[+]你可以通过向集群添加控制器来扩展 Kubernetes,这些控制器超出了 Kubernetes 本身作为一部分提供的内置控制器。
如果一个运行中的应用程序充当控制器,并且具有 API 访问权限,可以针对在控制平面中定义的自定义资源执行任务,这就是 Operator 模式的一个例子。
根据项目需求定制 Kubernetes 平台的人。
[+]例如,平台开发者可以使用自定义资源或使用聚合层扩展 Kubernetes API,为其 Kubernetes 实例添加专门针对其应用程序的功能。一些平台开发者也是贡献者,他们开发的扩展会贡献给 Kubernetes 社区。其他人则开发闭源的商业或特定站点扩展。
最小、最简单的 Kubernetes 对象。Pod 代表集群中一组运行中的容器。
[+]Pod 通常配置为运行单个主容器。它还可以运行可选的边车容器,这些容器添加了日志记录等辅助功能。Pod 通常由Deployment管理。
优先级类是为此类 Pod 分配的调度优先级的命名类。
[+]PriorityClass 是一个非命名空间对象,将名称映射到整数优先级,用于 Pod。名称在
metadata.name
字段中指定,优先级值在value
字段中。优先级范围从 -2147483648 到 1000000000(包含)。值越高表示优先级越高。在计算领域,代理是充当远程服务中间人的服务器。
[+]客户端与代理交互;代理将客户端的数据复制到实际服务器;实际服务器回复代理;代理将实际服务器的回复发送给客户端。
kube-proxy 是在集群中每个节点上运行的网络代理,它实现了 Kubernetes Service 概念的一部分。
你可以将 kube-proxy 作为普通的宿主空间代理服务运行。如果你的操作系统支持,你可以选择以混合模式运行 kube-proxy,以更少的系统资源实现相同的整体效果。
管理授权决策,允许管理员通过 Kubernetes API 动态配置访问策略。
[+]RBAC 利用四种 Kubernetes 对象
- 角色
- 在特定命名空间中定义权限规则。
- ClusterRole
- 在集群范围内定义权限规则。
- RoleBinding
- 在特定命名空间中向一组用户授予角色中定义的权限。
- ClusterRoleBinding
- 在集群范围内向一组用户授予角色中定义的权限。
更多信息请参见 RBAC。
一个副本集(旨在)在任何给定时间保持一组副本 Pod 运行。
[+]Deployment 等工作负载对象利用 ReplicaSet 来确保根据该 ReplicaSet 的规范,集群中运行着配置数量的Pod。
一个工作负载管理对象,管理一个复制的应用程序,确保指定数量的Pod实例正在运行。
[+]控制平面确保定义数量的 Pod 正在运行,即使有些 Pod 失败,手动删除 Pod,或者意外启动过多 Pod。
说明
ReplicationController 已弃用。请参见类似的Deployment。描述工作负载所需的资源,例如设备。ResourceClaim 在动态资源分配 (DRA) 中用于为 Pod 提供特定资源的访问权限。
[+]ResourceClaim 可以由工作负载操作员创建,也可以由 Kubernetes 根据ResourceClaimTemplate生成。
定义一个模板,Kubernetes 使用该模板创建资源声明。ResourceClaimTemplate 用于动态资源分配 (DRA),以提供每个 Pod 对独立、相似资源的访问。
[+]当工作负载规范中引用 ResourceClaimTemplate 时,Kubernetes 会根据模板自动创建 ResourceClaim 对象。每个 ResourceClaim 都绑定到一个特定的 Pod。当 Pod 终止时,Kubernetes 会删除相应的 ResourceClaim。
表示一个或多个基础设施资源,例如连接到节点的设备。驱动程序在集群中创建和管理 ResourceSlice。ResourceSlice 用于动态资源分配 (DRA)。
[+]当创建资源声明时,Kubernetes 使用 ResourceSlice 查找可以访问满足该声明的资源的节点。Kubernetes 将资源分配给 ResourceClaim,并将 Pod 调度到可以访问该资源的节点上。
在项目某些部分评审代码质量和正确性的人。
[+]评审者对代码库和软件工程原则都非常了解。评审者状态限定在代码库的一部分。
存储敏感信息,例如密码、OAuth 令牌和 SSH 密钥。
[+]密文让你对敏感信息的使用方式有更多控制权,并降低意外泄露的风险。密文值以 base64 字符串编码,默认情况下未加密存储,但可以配置为静态加密。
一个Pod可以通过多种方式引用 Secret,例如作为卷挂载或作为环境变量。Secret 旨在用于机密数据,而ConfigMaps旨在用于非机密数据。
一种将请求分配给队列的技术,比哈希取模队列数提供更好的隔离。
[+]我们经常需要隔离不同的请求流,以防止高强度流挤占低强度流。一种简单的将请求放入队列的方法是,对请求的一些特性进行哈希,然后对队列数量取模,以获得要使用的队列索引。哈希函数将与流对齐的请求特性作为输入。例如,在互联网中,这通常是源地址和目的地址、协议以及源端口和目的端口组成的五元组。
这种简单的基于哈希的方案有一个特点,即任何高强度流都会挤占所有哈希到同一队列的低强度流。为大量流提供良好隔离需要大量队列,这会带来问题。随机分片是一种更灵活的技术,可以更好地隔离低强度流和高强度流。随机分片的术语采用了从一副牌中发牌的隐喻;每个队列都是一张隐喻的牌。随机分片技术首先对识别流的请求特性进行哈希,生成一个几十位或更多位的哈希值。然后将该哈希值作为熵源来洗牌并发牌(队列)。检查所有发出的队列,并将请求放入其中长度最短的一个。使用适度的手牌大小,检查所有发出的牌的成本不高,并且给定的低强度流很有可能避开给定高强度流的影响。如果手牌大小很大,检查发出的队列的成本很高,并且低强度流更难避开一组高强度流的集体影响。因此,应慎重选择手牌大小。
社区成员,他们共同管理更大的 Kubernetes 开源项目中的一个持续性部分或方面。
[+]SIG 成员对推进特定领域(例如架构、API 机制或文档)有着共同的兴趣。SIG 必须遵循 SIG 治理指南,但可以有自己的贡献策略和沟通渠道。
有关更多信息,请参阅 kubernetes/community 仓库和当前的 SIG 和工作组列表。
管理一组Pod的部署和扩缩,并保证这些 Pod 的顺序性和唯一性。
[+]与Deployment类似,StatefulSet 管理基于相同容器规范的 Pod。与 Deployment 不同,StatefulSet 为其每个 Pod 维护一个稳定的身份。这些 Pod 从相同的规范创建,但不可互换:每个 Pod 都具有一个持久标识符,并在任何重新调度后保持不变。
如果你想使用存储卷为你的工作负载提供持久性,你可以将 StatefulSet 作为解决方案的一部分。尽管 StatefulSet 中的单个 Pod 容易失败,但持久的 Pod 标识符使得将现有卷与替代失败 Pod 的新 Pod 匹配变得更容易。
Kubernetes 系统生成的字符串,用于唯一标识对象。
[+]在 Kubernetes 集群的整个生命周期中,创建的每个对象都具有唯一的 UID。它旨在区分相似实体的历史出现。
用于以流的形式跟踪 Kubernetes 中对象变化的动词。它用于高效地检测变化。
[+]用于以流的形式跟踪 Kubernetes 中对象变化的动词。监控允许高效地检测变化;例如,如果一个控制器需要知道 ConfigMap 何时发生变化,可以使用监控而不是轮询。
有关更多信息,请参见API 概念中高效检测变化。
促进委员会、SIG 或跨 SIG 工作的短期、狭窄或解耦项目的讨论和/或实施。
[+]工作组是组织人员完成离散任务的一种方式。
有关更多信息,请参阅 kubernetes/community 仓库和当前的 SIG 和工作组列表。
工作负载是在 Kubernetes 上运行的应用程序。
[+]表示不同类型或部分工作负载的各种核心对象包括 DaemonSet、Deployment、Job、ReplicaSet 和 StatefulSet 对象。
例如,具有 Web 服务器和数据库的工作负载可能会在一个StatefulSet 中运行数据库,并在一个Deployment 中运行 Web 服务器。
反馈
此页面有帮助吗?
感谢您的反馈。如果您有关于如何使用 Kubernetes 的具体、可回答的问题,请在 Stack Overflow 上提问。如果您想报告问题或提出改进建议,请在 GitHub 仓库中提出问题。