词汇表
本词汇表旨在成为 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(容器运行时接口) 的任何其他实现。
- 容器存储接口 (CSI)LINK
容器存储接口 (CSI) 定义了一个标准接口,用于将存储系统暴露给容器。
[+]CSI 允许供应商为 Kubernetes 创建自定义存储插件,而无需将其添加到 Kubernetes 存储库中(树外插件)。若要从存储提供商使用 CSI 驱动程序,您必须首先 将其部署到您的集群。然后,您将能够创建一个 Storage Class,该类使用该 CSI 驱动程序。
- 部署LINK
管理复制应用程序的 API 对象,通常通过运行没有本地状态的 Pod 来完成。
[+]每个副本都由一个 Pod 表示,这些 Pod 分布在集群的 节点 之间。对于确实需要本地状态的工作负载,请考虑使用 StatefulSet。
- 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。
- 动态卷供应LINK
允许用户请求自动创建存储 卷.
[+]动态供应消除了集群管理员预先供应存储的需要。相反,它根据用户请求自动供应存储。动态卷供应基于一个 API 对象,StorageClass,它引用一个 Volume Plugin,该插件提供一个 卷 以及要传递给 Volume Plugin 的参数集。
- EndpointSliceLINK
一种将网络端点与 Kubernetes 资源分组在一起的方式。
[+]一种可扩展且可扩展的将网络端点分组在一起的方式。它们可以被 kube-proxy 用于在每个 节点 上建立网络路由。
- 终结器LINK
终结器是命名空间键,它们告诉 Kubernetes 在满足特定条件之前,等待完全删除标记为要删除的资源。终结器提醒 控制器 清理已删除对象拥有的资源。
[+]当您告诉 Kubernetes 删除具有为其指定终结器的对象时,Kubernetes API 会通过填充
.metadata.deletionTimestamp
来标记该对象要删除,并返回202
状态代码(HTTP“已接受”)。目标对象将保持在终止状态,同时控制平面或其他组件执行由终结器定义的操作。这些操作完成后,控制器将从目标对象中删除相关的终结器。当metadata.finalizers
字段为空时,Kubernetes 将认为删除已完成并删除该对象。您可以使用终结器来控制 垃圾回收 资源。例如,您可以定义一个终结器,以便在控制器删除目标资源之前清理相关资源或基础设施。
- 不可变基础设施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。
- 平台开发人员LINK
一个根据项目需要定制 Kubernetes 平台的人。
[+]例如,平台开发人员可以使用自定义资源或使用聚合层扩展 Kubernetes API,为他们的 Kubernetes 实例添加功能,专门用于他们的应用程序。一些平台开发人员也是贡献者,并开发扩展,这些扩展被贡献给 Kubernetes 社区。另一些人则开发封闭源代码的商业扩展或特定于站点的扩展。
- PodLINK
Kubernetes 最小且最简单的对象。Pod 代表集群中运行的一组容器。
[+]Pod 通常被设置为运行单个主容器。它还可以运行可选的边车容器,这些容器添加补充功能,例如日志记录。Pod 通常由Deployment管理。
- 代理LINK
在计算中,代理是一个充当远程服务的中间服务器。
[+]客户端与代理交互;代理将客户端的数据复制到实际服务器;实际服务器回复代理;代理将实际服务器的回复发送给客户端。
kube-proxy是一个网络代理,运行在集群中的每个节点上,实现 Kubernetes服务概念的一部分。
你可以将 kube-proxy 作为普通的用户空间代理服务运行。如果你的操作系统支持,你可以改为在混合模式下运行 kube-proxy,这种模式使用更少的系统资源来实现相同的整体效果。
- RBAC(基于角色的访问控制)LINK
管理授权决策,允许管理员通过Kubernetes API动态配置访问策略。
[+]RBAC 利用角色,其中包含权限规则,以及角色绑定,它们将角色中定义的权限授予一组用户。
- 副本集LINK
一个副本集(旨在)在任何给定时间维护一组运行的副本 Pod。
[+]工作负载对象,例如 Deployment,利用 ReplicaSets 来确保在集群中运行配置数量的 Pods,基于该 ReplicaSet 的规范。
- ReplicationControllerLINK
一种管理复制应用程序的工作负载资源,确保运行特定数量的 Pod 实例。
[+]即使一些 Pod 失败,手动删除 Pod,或错误地启动太多 Pod,控制平面也会确保运行定义数量的 Pod。
注意
ReplicationController 已被弃用。请参阅类似的 Deployment。 - SecretLINK
存储敏感信息,例如密码、OAuth 令牌和 SSH 密钥。
[+]Secrets 让你更好地控制敏感信息的用途,降低意外暴露的风险。Secret 值以 base64 字符串编码,默认情况下未加密存储,但可以配置为 在静止状态下加密。
一个 Pod 可以通过多种方式引用 Secret,例如在卷挂载或环境变量中。Secrets 用于机密数据,而 ConfigMaps 用于非机密数据。
- 随机分片LINK
一种将请求分配到队列的技术,提供比模数散列到队列数量更好的隔离。
[+]我们经常关注隔离不同的请求流,以便高强度流不会挤占低强度流。将请求放入队列的一种简单方法是对请求的某些特征进行散列,模数为队列的数量,以获得要使用的队列的索引。散列函数使用与流一致的请求特征作为输入。例如,在互联网中,这通常是源和目标地址、协议以及源和目标端口的 5 元组。
这种简单的基于散列的方案具有以下特性:任何高强度流都会挤占散列到同一队列的所有低强度流。为大量流提供良好的隔离需要大量队列,这存在问题。随机分片是一种更灵活的技术,可以更好地隔离低强度流和高强度流。随机分片的术语使用从一副牌中发牌的隐喻;每个队列都是一张隐喻的卡片。随机分片技术从对请求的流标识特征进行散列开始,以生成具有几十甚至更多位的散列值。然后,使用散列值作为熵源来洗牌并发一副牌(队列)。检查所有发出的牌,并将请求放入长度最短的已检查牌之一。在手牌大小适度的情况下,检查所有发出的牌的成本并不高,并且给定的低强度流有很大的机会躲避给定高强度流的影响。在手牌大小很大的情况下,检查发出的牌的成本很高,低强度流更难躲避一组高强度流的集体影响。因此,应明智地选择手牌大小。
- Sidecar 容器LINK
一个或多个 容器,通常在任何应用程序容器运行之前启动。
[+]Sidecar 容器类似于常规应用程序容器,但目的不同:Sidecar 为主应用程序容器提供 Pod 本地服务。与 初始化容器 不同,Sidecar 容器在 Pod 启动后继续运行。
阅读 Sidecar 容器 以了解更多信息。
- StatefulSetLINK
管理一组 Pods 的部署和扩展,并提供有关这些 Pod 的排序和唯一性的保证。
[+]与 Deployment 一样,StatefulSet 管理基于相同容器规范的 Pod。与 Deployment 不同,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 存储库 中打开一个问题。