词汇表
本词汇表旨在成为 Kubernetes 术语的全面、标准化列表。它包括 Kubernetes 特定的技术术语,以及提供有用上下文的更通用术语。
根据其标签过滤术语
单击下面的 [+] 指示器以获取任何特定术语的更长解释。
- 聚合层LINK
聚合层允许您在集群中安装其他 Kubernetes 风格的 API。
[+]当您已将 Kubernetes API 服务器 配置为 支持其他 API 时,您可以添加
APIService
对象来“声明”Kubernetes API 中的 URL 路径。 - API 服务器LINK也称为:kube-apiserver
API 服务器是 Kubernetes 控制平面 的一个组件,它公开 Kubernetes API。API 服务器是 Kubernetes 控制平面的前端。
[+]Kubernetes API 服务器的主要实现是 kube-apiserver。kube-apiserver 旨在水平扩展,即通过部署更多实例进行扩展。您可以运行多个 kube-apiserver 实例并在这些实例之间平衡流量。
- API 发起的驱逐LINK
API 发起的驱逐是您使用 驱逐 API 创建一个
[+]Eviction
对象来触发优雅的 Pod 终止的过程。您可以通过直接使用 kube-apiserver 的客户端(如
kubectl drain
命令)调用驱逐 API 来请求驱逐。当创建Eviction
对象时,API 服务器会终止 Pod。API 发起的驱逐会尊重您配置的
PodDisruptionBudgets
和terminationGracePeriodSeconds
。API 发起的驱逐与 节点压力驱逐 不同。
- 有关更多信息,请参阅 API 发起的驱逐。
- 容器运行时LINK
一个基本组件,使 Kubernetes 能够有效地运行容器。它负责管理 Kubernetes 环境中容器的执行和生命周期。
[+]Kubernetes 支持容器运行时,例如containerd、CRI-O,以及任何其他Kubernetes CRI(容器运行时接口)的实现。
- 部署LINK
一个 API 对象,它管理一个复制的应用程序,通常通过运行没有本地状态的 Pod 来实现。
[+]每个副本都由一个Pod 表示,这些 Pod 分布在集群的节点上。对于确实需要本地状态的工作负载,请考虑使用StatefulSet。
- 中断LINK
中断是导致一个或多个 Pod 停止服务的事件。中断会对依赖于受影响 Pod 的工作负载资源(例如 Deployment)产生影响。
[+]如果您作为集群操作员销毁了属于应用程序的 Pod,Kubernetes 将其称为自愿中断。如果 Pod 由于节点故障或影响更广泛故障区域的停机而脱机,Kubernetes 将其称为非自愿中断。
有关更多信息,请参阅 中断。
- DockershimLINK
dockershim 是 Kubernetes 1.23 及更早版本中的一个组件。它允许 kubelet 与 Docker Engine 通信。
[+]从 1.24 版本开始,dockershim 已从 Kubernetes 中移除。有关更多信息,请参阅 Dockershim 常见问题解答。
- 下行 APILINK
Kubernetes 的机制,用于将 Pod 和容器字段值暴露给在容器中运行的代码。
[+]有时,容器需要了解自身的信息,而无需对直接将其与 Kubernetes 耦合的容器代码进行更改。
Kubernetes 下行 API 允许容器使用有关自身或其在 Kubernetes 集群中的上下文的信息。容器中的应用程序可以访问该信息,而无需应用程序充当 Kubernetes API 的客户端。
有两种方法可以将 Pod 和容器字段暴露给正在运行的容器。
- 使用 环境变量
- 使用
downwardAPI
卷
这两种暴露 Pod 和容器字段的方法统称为下行 API。
- EndpointSliceLINK
将网络端点与 Kubernetes 资源分组的一种方式。
[+]一种可扩展且可扩展的方式,用于将网络端点分组在一起。这些可以被 kube-proxy 用于在每个 节点 上建立网络路由。
- 终结器LINK
终结器是命名空间键,它们告诉 Kubernetes 在满足特定条件之前等待,然后再完全删除标记为要删除的资源。终结器提醒 控制器 清理已删除对象拥有的资源。
[+]当您告诉 Kubernetes 删除具有为其指定终结器的对象时,Kubernetes API 通过填充
.metadata.deletionTimestamp
将对象标记为要删除,并返回202
状态代码(HTTP“已接受”)。目标对象将保持终止状态,而控制平面或其他组件将执行终结器定义的操作。这些操作完成后,控制器将从目标对象中删除相关的终结器。当metadata.finalizers
字段为空时,Kubernetes 认为删除已完成并删除该对象。您可以使用终结器来控制 垃圾回收 资源。例如,您可以定义一个终结器,在控制器删除目标资源之前清理相关的资源或基础设施。
- HostAliasesLINK
HostAliases 是 IP 地址和主机名之间的映射,将被注入到 Pod 的 hosts 文件中。
[+]HostAliases 是一个可选的主机名和 IP 地址列表,如果指定,将被注入到 Pod 的 hosts 文件中。这仅对非 hostNetwork Pod 有效。
- 不可变基础设施LINK
不可变基础设施是指部署后无法更改的计算机基础设施(虚拟机、容器、网络设备)。
[+]不可变性可以通过覆盖未经授权的更改的自动化流程或通过从一开始就不允许更改的系统来强制执行。容器 是不可变基础设施的一个很好的例子,因为对容器的持久性更改只能通过创建容器的新版本或从其镜像重新创建现有容器来进行。
通过防止或识别未经授权的更改,不可变基础设施使识别和缓解安全风险变得更加容易。操作这样的系统变得更加简单,因为管理员可以对其进行假设。毕竟,他们知道没有人犯错误或做出他们忘记沟通的更改。不可变基础设施与基础设施即代码相辅相成,其中创建基础设施所需的所有自动化都存储在版本控制(如 Git)中。不可变性和版本控制的这种组合意味着存在系统每个授权更改的持久审计日志。
- kOps(Kubernetes 操作)LINK
[+]kOps
不仅可以帮助您创建、销毁、升级和维护生产级、高可用 Kubernetes 集群,还可以配置必要的云基础设施。注意
AWS(Amazon Web Services)目前已获得官方支持,DigitalOcean、GCE 和 OpenStack 处于测试版支持阶段,Azure 处于 Alpha 版支持阶段。kOps
是一个自动配置系统- 全自动安装
- 使用 DNS 识别集群
- 自愈:所有内容都在自动扩展组中运行
- 支持多种操作系统(Amazon Linux、Debian、Flatcar、RHEL、Rocky 和 Ubuntu)
- 高可用性支持
- 可以直接配置,或生成 terraform 清单
- kube-proxyLINK
kube-proxy 是一个网络代理,运行在集群中的每个 节点 上,实现 Kubernetes 服务 概念的一部分。
[+]kube-proxy 在节点上维护网络规则。这些网络规则允许从集群内部或外部的网络会话到 Pod 的网络通信。
kube-proxy 使用操作系统的包过滤层(如果有并可用)。否则,kube-proxy 会自行转发流量。
- 成员LINK
K8s 社区中持续活跃的 贡献者。
[+]成员可以被分配问题和 PR,并通过 GitHub 团队参与 特殊兴趣小组 (SIG)。成员的 PR 会自动运行预提交测试。成员应继续积极为社区做出贡献。
- MinikubeLINK
一个在本地运行 Kubernetes 的工具。
[+]Minikube 在您计算机上的 VM 中运行单节点集群。您可以使用 Minikube 在学习环境中尝试 Kubernetes。
- 混合版本代理 (MVP)LINK也称为:MVP
让 kube-apiserver 将资源请求代理到不同的对等 API 服务器的功能。
[+]当集群有多个运行不同 Kubernetes 版本的 API 服务器时,此功能使资源请求能够由正确的 API 服务器提供服务。
MVP 默认情况下是禁用的,可以通过在启动 API Server 时启用名为
UnknownVersionInteroperabilityProxy
的 功能开关 来激活。 - 平台开发人员LINK
一个根据项目需求定制 Kubernetes 平台的人员。
[+]例如,平台开发人员可以使用 自定义资源 或 使用聚合层扩展 Kubernetes API 为其 Kubernetes 实例添加功能,专门用于其应用程序。一些平台开发人员也是 贡献者,并开发扩展并贡献给 Kubernetes 社区。其他人则开发闭源商业或特定于站点的扩展。
- PodLINK
最小的、最简单的 Kubernetes 对象。Pod 代表集群中运行的一组 容器。
[+]Pod 通常设置为运行单个主容器。它还可以运行可选的辅助容器,这些容器添加辅助功能,例如日志记录。Pod 通常由 Deployment 管理。
- PriorityClassLINK
PriorityClass 是一个命名类,用于指定应分配给该类 Pod 的调度优先级。
[+]PriorityClass 是一个非命名空间对象,将名称映射到 Pod 的整数优先级。名称在
metadata.name
字段中指定,优先级值在value
字段中指定。优先级范围从 -2147483648 到 1000000000(含)。值越大,优先级越高。 - 代理LINK
在计算中,代理是充当远程服务的中间服务器。
[+]客户端与代理交互;代理将客户端的数据复制到实际服务器;实际服务器回复代理;代理将实际服务器的回复发送给客户端。
kube-proxy 是一个网络代理,在集群中的每个节点上运行,实现 Kubernetes 服务 概念的一部分。
您可以将 kube-proxy 作为普通用户空间代理服务运行。如果您的操作系统支持,您可以改为在混合模式下运行 kube-proxy,该模式使用更少的系统资源实现相同的整体效果。
- RBAC(基于角色的访问控制)LINK
管理授权决策,允许管理员通过 Kubernetes API 动态配置访问策略。
[+]RBAC 利用角色,其中包含权限规则,以及角色绑定,这些绑定将角色中定义的权限授予一组用户。
- ReplicaSetLINK
ReplicaSet(旨在)在任何给定时间维护一组正在运行的副本 Pod。
[+]诸如 Deployment 之类的工作负载对象利用 ReplicaSet 来确保根据该 ReplicaSet 的规范,在您的集群中运行配置数量的 Pod。
- ReplicationControllerLINK
管理复制应用程序的工作负载资源,确保运行特定数量的 Pod 实例。
[+]控制平面确保定义数量的 Pod 正在运行,即使某些 Pod 失败,即使您手动删除 Pod,或者即使错误地启动了太多 Pod。
注意
ReplicationController 已弃用。请参阅 Deployment,它类似。 - Shuffle-shardingLINK
一种将请求分配到队列的技术,它比对队列数量取模的哈希方法提供了更好的隔离性。
[+]我们经常关心如何将不同的请求流彼此隔离,这样高强度流就不会挤占低强度流。将请求放入队列的一种简单方法是对请求的一些特征进行哈希,然后对队列数量取模,得到要使用的队列的索引。哈希函数使用与流一致的请求特征作为输入。例如,在互联网中,这通常是源地址和目标地址、协议以及源端口和目标端口的 5 元组。
这种简单的基于哈希的方案具有以下特性:任何高强度流都会挤占所有哈希到同一队列的低强度流。为了为大量流提供良好的隔离,需要大量的队列,这存在问题。Shuffle-sharding 是一种更灵活的技术,可以更好地将低强度流与高强度流隔离。Shuffle-sharding 的术语使用从一副牌中发牌的隐喻;每个队列都是一张隐喻的牌。Shuffle-sharding 技术首先对请求的流标识特征进行哈希,生成一个具有数十甚至更多位的哈希值。然后,哈希值被用作熵源来洗牌并发牌(队列)。检查所有发牌的队列,并将请求放入其中长度最短的队列中。对于适度的牌数,检查所有发牌的牌的成本并不高,并且给定的低强度流有很大的机会躲避给定的高强度流的影响。对于大量的牌数,检查发牌的队列的成本很高,并且低强度流更难躲避一组高强度流的集体影响。因此,牌数应该谨慎选择。
- Sidecar 容器LINK
一个或多个通常在任何应用程序容器运行之前启动的 容器。
[+]Sidecar 容器类似于普通的应用程序容器,但目的不同:sidecar 为主应用程序容器提供 Pod 本地服务。与 初始化容器 不同,sidecar 容器在 Pod 启动后会继续运行。
阅读 Sidecar 容器 以获取更多信息。
- StatefulSetLINK
管理一组 Pod 的部署和扩展,并提供关于这些 Pod 的排序和唯一性的保证。
[+]与 部署 一样,StatefulSet 管理基于相同容器规范的 Pod。与部署不同,StatefulSet 为其每个 Pod 保持一个粘性身份。这些 Pod 是从相同的规范创建的,但不可互换:每个 Pod 都有一个持久标识符,它在任何重新调度中都保持不变。
如果您想使用存储卷为您的工作负载提供持久性,您可以将 StatefulSet 作为解决方案的一部分。虽然 StatefulSet 中的单个 Pod 容易出现故障,但持久的 Pod 标识符使将现有卷匹配到替换任何已故障 Pod 的新 Pod 变得更容易。
- WG(工作组)LINK
为委员会、SIG 或跨 SIG 工作促进短期、狭窄或解耦项目的讨论和/或实施。
[+]工作组是组织人员完成离散任务的一种方式。
有关更多信息,请参阅 kubernetes/community 仓库和当前的 SIG 和工作组 列表。
- 工作负载LINK
工作负载是在 Kubernetes 上运行的应用程序。
[+]代表工作负载的不同类型或部分的各种核心对象包括 DaemonSet、Deployment、Job、ReplicaSet 和 StatefulSet 对象。
例如,具有 Web 服务器和数据库的工作负载可能会在 StatefulSet 中运行数据库,并在 Deployment 中运行 Web 服务器。
反馈
此页面是否有帮助?
感谢您的反馈。如果您有关于如何使用 Kubernetes 的具体问题,请在 Stack Overflow 上提问。如果您想 报告问题 或 建议改进,请在 GitHub 仓库 中打开一个问题。