术语表

本术语表旨在成为 Kubernetes 术语的全面、标准化的列表。它包括 Kubernetes 特有的技术术语以及提供有用上下文的更通用术语。

根据标签过滤术语

Kubernetes 的内部组件。
与 Kubernetes 开源开发相关。
Kubernetes 默认支持的一种资源类型。
支持的 Kubernetes 自定义。
与初次使用 Kubernetes 的用户相关。
Kubernetes 组件如何相互通信(以及如何与集群外部程序通信)。
启动和维护 Kubernetes。
确保 Kubernetes 应用安全无虞。
Kubernetes 应用如何处理持久化数据。
使 Kubernetes 更易用或更好用的软件。
表示一种常见的 Kubernetes 用户类型。
在 Kubernetes 上运行的应用。
架构 社区 核心对象 扩展 基础 网络 操作 安全 存储 工具 用户类型 工作负载 全选 取消全选

点击下方 [+] 符号以查看任何特定术语的更详细解释。

  • 附加组件

    扩展 Kubernetes 功能的资源。

    [+]

    安装附加组件一文详细解释了如何在你的集群中使用附加组件,并列出了一些流行的附加组件。

  • 准入控制器

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

    [+]

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

  • 亲和性

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

    [+]

    亲和性有两种类型:

    这些规则是使用 Kubernetes 标签和在 Pod 中指定的选择器来定义的,并且它们可以是强制性的(required)或倾向性的(preferred),具体取决于你希望调度器强制执行它们的严格程度。

  • 聚合层

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

    [+]

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

  • 注解

    用于向对象附加任意非标识性元数据的键值对。

    [+]

    注解中的元数据可以很小或很大,可以是结构化的或非结构化的,并且可以包含标签不允许的字符。客户端(如工具和库)可以检索这些元数据。

  • API 组

    Kubernetes API 中一组相关的路径。

    [+]

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

    • 阅读API 组以获取更多信息。
  • API 资源
    亦称:资源

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

    [+]

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

  • API 服务器
    亦称:kube-apiserver

    API 服务器是 Kubernetes 控制平面的一个组件,它暴露了 Kubernetes API。API 服务器是 Kubernetes 控制平面的前端。

    [+]

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

  • API 发起的驱逐

    API 发起的驱逐是你使用Eviction API创建 Eviction 对象来触发优雅的 Pod 终止的过程。

    [+]

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

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

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

  • 应用容器

    应用容器(或称 app 容器)是Pod中的容器,它们在任何Init 容器完成后启动。

    [+]

    Init 容器允许你将对整个工作负载重要的初始化细节分离开来,并且这些细节在应用容器启动后无需继续运行。如果 Pod 没有配置 Init 容器,则该 Pod 中的所有容器都是应用容器。

  • 应用架构师

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

    [+]

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

  • 应用开发者

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

    [+]

    应用开发者专注于应用程序的一部分。他们的关注范围大小可能差异很大。

  • 应用
    运行各种容器化应用的层。[+]

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

  • 审批者

    可以评审和批准 Kubernetes 代码贡献的人。

    [+]

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

  • cAdvisor

    cAdvisor (Container Advisor) 使容器用户能够了解其正在运行的容器的资源使用和性能特征。

    [+]

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

  • 证书

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

    [+]

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

  • cgroup (控制组)

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

    [+]

    cgroup 是 Linux 内核的一项特性,用于限制、记账和隔离一组进程的资源使用(CPU、内存、磁盘 I/O、网络)。

  • CIDR

    CIDR(无类域间路由)是一种描述 IP 地址块的表示法,广泛用于各种网络配置中。

    [+]

    在 Kubernetes 的语境中,每个节点都通过起始地址和使用 CIDR 的子网掩码分配一个 IP 地址范围。这使得节点能够为每个Pod分配唯一的 IP 地址。虽然最初是 IPv4 的概念,但 CIDR 也已扩展到包括 IPv6。

  • CLA (贡献者许可协议)

    贡献者将其贡献授权给开源项目的条款。

    [+]

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

  • Cloud Controller Manager

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

    [+]

    通过解耦 Kubernetes 与底层云基础设施之间的互操作性逻辑,cloud-controller-manager 组件使云提供商能够以与主 Kubernetes 项目不同的速度发布特性。

  • Cloud Native Computing Foundation (CNCF)

    Cloud Native Computing Foundation (CNCF) 围绕项目构建可持续的生态系统并培育社区,这些项目将容器编排作为微服务架构的一部分。

    Kubernetes 是一个 CNCF 项目。

    [+]

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

  • 云提供商
    亦称:云服务提供商

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

    [+]

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

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

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

  • 集群

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

    [+]

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

  • 集群架构师

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

    [+]

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

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

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

  • 集群运维

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

    [+]

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

  • 集群运维工程师

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

    [+]

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

  • 代码贡献者

    开发代码并将其贡献给 Kubernetes 开源代码库的人。

    [+]

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

  • 配置映射

    用于以键值对形式存储非敏感数据的 API 对象。Pod 可以将 ConfigMap 作为环境变量、命令行参数或中的配置文件来使用。

    [+]

    ConfigMap 允许你将环境特定的配置与你的容器镜像解耦,以便你的应用程序易于移植。

  • 容器

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

    [+]

    容器将应用程序与底层主机基础设施解耦,以便在不同的云或操作系统环境中更容易部署,也更容易伸缩。在容器内部运行的应用程序称为容器化应用程序。将这些应用程序及其依赖项打包到容器镜像中的过程称为容器化。

  • 容器环境变量

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

    [+]

    容器环境变量提供正在运行的容器化应用程序所需的信息,以及关于容器重要资源的信息。例如,文件系统详情、关于容器本身的信息以及其他集群资源,如 Service 端点。

  • 容器生命周期钩子

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

    [+]

    向容器暴露了两个钩子:PostStart 在容器创建后立即执行,PreStop 是阻塞的,在容器终止前立即调用。

  • 容器网络接口 (CNI)

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

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

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

    [+]

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

  • 容器运行时接口 (CRI)

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

    [+]

    The Kubernetes Container Runtime Interface (CRI) defines the main gRPC protocol for the communication between the node components kubelet and container runtime.

  • 容器存储接口 (CSI)

    容器存储接口 (CSI) 定义了用于将存储系统暴露给容器的标准接口。

    [+]

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

  • containerd

    强调简洁、健壮和可移植性的容器运行时

    [+]

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

  • 贡献者

    为帮助 Kubernetes 项目或社区而贡献代码、文档或时间的人。

    [+]

    贡献包括 Pull Request (PR)、Issue、反馈、参与特别兴趣小组 (SIG) 或组织社区活动。

  • 控制平面

    暴露 API 和接口的容器编排层,用于定义、部署和管理容器的生命周期。

    [+]

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

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

  • 控制器

    在 Kubernetes 中,控制器是控制循环,负责监视集群状态,然后在需要时进行或请求更改。每个控制器都试图使当前的集群状态更接近期望状态。

    [+]

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

    一些控制器也运行在控制平面内部,提供作为 Kubernetes 操作核心的控制循环。例如:Deployment 控制器、DaemonSet 控制器、Namespace 控制器和 Persistent Volume 控制器(以及其他)都运行在kube-controller-manager 中。

  • CRI-O

    一个工具,让你可以在 Kubernetes CRI 中使用 OCI 容器运行时。

    [+]

    CRI-O 是容器运行时接口 (CRI) 的一个实现,用于启用兼容 Open Container Initiative (OCI) 运行时规范容器运行时。

    部署 CRI-O 允许 Kubernetes 使用任何 OCI 兼容的运行时作为容器运行时来运行Pod,并从远程注册表拉取 OCI 容器镜像。

  • CronJob

    管理在周期性调度下运行的Job

    [+]

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

  • CustomResourceDefinition

    自定义代码,用于定义要添加到 Kubernetes API Server 的资源,而无需构建完整的自定义服务器。

    [+]

    如果公开支持的 API 资源无法满足你的需求,Custom Resource Definitions 允许你为你的环境扩展 Kubernetes API。

  • DaemonSet

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

    [+]

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

  • 数据平面
    提供 CPU、内存、网络和存储等资源容量的层,以便容器能够运行并连接到网络。[+]

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

  • Deployment

    管理复制应用的 API 对象,通常通过运行没有本地状态的 Pod 来实现。

    [+]

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

  • 开发者(消歧)

    可以指:应用开发者代码贡献者平台开发者

    [+]

    这个术语有多重含义,其具体意义可能取决于上下文

  • 设备插件

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

    [+]

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

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

  • 中断

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

    [+]

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

    参见中断了解更多信息。

  • Docker

    Docker(特别是 Docker Engine)是一种提供操作系统级虚拟化(也称为容器)的软件技术。

    [+]

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

  • Dockershim

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

    [+]

    从 1.24 版本开始,dockershim 已从 Kubernetes 中移除。有关更多信息,请参见Dockershim FAQ

  • 下游(消歧)

    可以指:依赖核心 Kubernetes 代码库或分支仓库的 Kubernetes 生态系统中的代码。

    [+]
    • 在**Kubernetes 社区**:讨论中经常使用*下游*来指代依赖核心 Kubernetes 代码库的生态系统、代码或第三方工具。例如,Kubernetes 中的一个新功能可能会被下游应用采用以改进其功能。
    • 在 **GitHub** 或 **git** 中:约定俗成的说法是将分支仓库称为*下游*,而源仓库则被视为*上游*。
  • Downward API

    Kubernetes 用于将 Pod 和容器字段值暴露给容器中运行的代码的机制。

    [+]

    有时容器获取关于自身的信息很有用,而无需修改容器代码使其直接与 Kubernetes 耦合。

    Kubernetes downward API 允许容器消费关于自身或其在 Kubernetes 集群中上下文的信息。容器中的应用可以访问这些信息,而无需该应用充当 Kubernetes API 的客户端。

    有两种方式将 Pod 和容器字段暴露给运行中的容器

    总而言之,这两种暴露 Pod 和容器字段的方式称为 *downward API*。

  • 排空

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

    [+]

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

  • 持续时间

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

    [+]

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

    在 Kubernetes 中使用持续时间的 API 中,该值表示为一系列非负整数与时间单位后缀的组合。你可以有多个时间量,持续时间是这些时间量的总和。有效的时间单位为“ns”、“µs”(或“us”)、“ms”、“s”、“m”和“h”。

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

  • 动态卷制备

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

    [+]

    动态制备消除了集群管理员预先制备存储的需要。取而代之的是,它根据用户请求自动制备存储。动态卷制备基于一个 API 对象,即StorageClass,它引用一个负责制备Volume Plugin,并传递参数集合给该 Volume Plugin。

  • 端点

    服务的端点是实现该服务的Pod 之一(或外部服务器)。

    [+]

    对于带选择器的 Service,EndpointSlice 控制器将自动创建一个或多个EndpointSlice,其中包含所选端点 Pod 的 IP 地址。

    也可以手动创建 EndpointSlice,以指示未指定选择器的服务的端点。

  • EndpointSlice

    EndpointSlice 跟踪具有匹配选择器的 Pod 的 IP 地址。

    [+]

    可以为未指定选择器的服务手动配置 EndpointSlice。

  • 临时性容器

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

    [+]

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

    临时性容器不受静态 Pod 支持。

  • etcd

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

    [+]

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

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

  • 事件

    事件是描述系统中状态变化/值得注意的事件的 Kubernetes 对象。

    [+]

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

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

    在 Kubernetes 中,审计生成了不同类型的事件记录(API 组 audit.k8s.io)。

  • 驱逐

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

    [+]
  • 扩展

    扩展是与 Kubernetes 深度集成并对其进行扩展以支持新型硬件的软件组件。

    [+]

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

  • 特性门控

    特性门控是一组键(不透明的字符串值),可用于控制在集群中启用哪些 Kubernetes 特性。

    [+]

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

  • 终结器

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

    [+]

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

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

  • FlexVolume

    FlexVolume 是用于创建树外卷插件的已弃用接口。容器存储接口 (CSI) 是一个较新的接口,解决了 FlexVolume 的几个问题。

    [+]

    FlexVolume 使户能够编写自己的驱动程序并在 Kubernetes 中添加对其卷的支持。FlexVolume 驱动程序的二进制文件和依赖项必须安装在主机上。这需要 root 权限。Storage SIG 建议如果可能的话实现一个CSI 驱动程序,因为它解决了 FlexVolume 的局限性。

  • 垃圾回收

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

    [+]

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

  • Gateway API

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

    [+]

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

  • 组版本资源
    也被称为: GVR

    表示唯一的 Kubernetes API 资源的方式。

    [+]

    组版本资源 (GVR) 指定了与访问 Kubernetes 中特定 ID 对象相关的 API 组、API 版本和资源(即 URI 中对象类型名称)。GVR 使你能够定义和区分不同的 Kubernetes 对象,并指定一种访问对象的方式,这种方式即使在 API 变化时也能保持稳定。

  • Helm Chart

    一组预配置的 Kubernetes 资源包,可以使用 Helm 工具进行管理。

    [+]

    Chart 提供了一种可复现的方式来创建和共享 Kubernetes 应用。单个 Chart 可以用于部署简单的东西,比如一个 memcached Pod,也可以用于部署复杂的东西,比如一个完整的 Web 应用栈,包括 HTTP 服务器、数据库、缓存等等。

  • 水平Pod自动扩缩器
    也被称为: HPA

    一个 API 资源,根据目标 CPU 利用率或自定义指标目标自动扩缩Pod 副本的数量。

    [+]

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

  • HostAliases

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

    [+]

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

  • 镜像 (Image)

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

    [+]

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

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

    不可变基础设施指一旦部署就无法更改的计算机基础设施(虚拟机、容器、网络设备)。

    [+]

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

    通过防止或识别未经授权的更改,不可变基础设施可以更容易地识别和缓解安全风险。操作这样的系统变得更加简单,因为管理员可以对其进行假设。毕竟,他们知道没有人犯错或进行忘记沟通的更改。不可变基础设施与基础设施即代码(其中创建基础设施所需的所有自动化都存储在版本控制中,例如 Git)相辅相成。这种不可变性和版本控制的结合意味着系统每一次授权更改都有持久的审计日志。

  • Ingress

    一个 API 对象,用于管理集群中服务的外部访问,通常是 HTTP 访问。

    [+]

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

  • Init 容器 (Init Container)

    一个或多个初始化 容器,它们必须先运行完成,然后才能运行任何应用容器。

    [+]

    初始化 (init) 容器与普通应用容器类似,但有一个区别:init 容器必须先运行完成,然后才能启动任何应用容器。Init 容器按顺序运行:每个 init 容器必须先运行完成,下一个 init 容器才能开始。

    sidecar 容器 不同,init 容器在 Pod 启动后不会保持运行。

    有关更多信息,请阅读 init 容器 文档。

  • Istio

    一个开放平台(非 Kubernetes 特定),它提供一种统一的方式来集成微服务、管理流量流、实施策略和聚合遥测数据。

    [+]

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

  • Job

    一个有限或批处理任务,运行直到完成。

    [+]

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

  • JSON Web Token (JWT)

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

    [+]

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

  • kOps (Kubernetes Operations)

    kOps 不仅能帮助你创建、销毁、升级和维护生产级别的、高可用的 Kubernetes 集群,还会预置所需的云基础设施。

    [+]

    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

    控制平面组件,负责监测新创建的未分配 Pods节点,并为它们选择一个节点运行。

    [+]

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

  • 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)

    用对用户有意义且相关的标识属性标记对象。

    [+]

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

  • LimitRange

    提供约束以限制命名空间中每个 ContainersPods 的资源消耗。

    [+]

    LimitRange 限制按类型创建的对象数量,以及命名空间中单个 ContainersPods 可能请求/消耗的计算资源量。

  • 日志 (Logging)

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

    [+]

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

  • 托管服务 (Managed Service)

    由第三方提供商维护的软件服务。

    [+]

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

  • 清单 (Manifest)

    Kubernetes API 对象采用 JSONYAML 格式的规范。

    [+]

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

  • Master

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

    [+]

    一些预置工具(例如 kubeadm)和托管服务仍然使用该术语,用 标记 节点kubernetes.io/role 并控制 控制平面 pod 的位置。

  • 成员 (Member)

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

    [+]

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

  • Minikube

    一个在本地运行 Kubernetes 的工具。

    [+]

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

  • 镜像 Pod (Mirror Pod)

    一个 pod 对象,kubelet 用来表示 静态 Pod

    [+]

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

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

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

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

    [+]

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

    MVP 默认禁用,可以在 API Server 启动时通过启用名为 UnknownVersionInteroperabilityProxy功能门 来激活。

  • 名称 (Name)

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

    [+]

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

  • 命名空间 (Namespace)

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

    [+]

    命名空间用于在集群中组织对象,并提供划分集群资源的方式。资源的名称需要在命名空间内唯一,但在不同命名空间之间可以重复。基于命名空间的作用域仅适用于命名空间对象(例如 Deployment、Service 等),而不适用于集群范围对象(例如 StorageClass、Node、PersistentVolume 等)。

  • 网络策略 (Network Policy)

    一种规范,定义了 Pod 组之间以及与其它网络端点之间的允许通信方式。

    [+]

    网络策略帮助你以声明性方式配置允许哪些 Pod 互相连接、哪些命名空间允许通信,以及更具体地在哪些端口号上强制执行每条策略。NetworkPolicy 资源使用标签来选择 Pod 并定义规则,这些规则指定允许哪些流量到达选定的 Pod。网络策略由网络提供商提供的受支持的网络插件来实现。请注意,创建网络资源而没有控制器来实现它将无效。

  • 节点 (Node)

    节点是 Kubernetes 中的工作机器。

    [+]

    工作节点可以是虚拟机或物理机,具体取决于集群。它拥有运行 Pods 所需的本地守护进程或服务,并由控制平面管理。节点上的守护进程包括 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 模式 (Operator pattern)

    Operator 模式 是一种系统设计,它将 控制器 与一个或多个自定义资源关联起来。

    [+]

    你可以在 Kubernetes 自身内置的控制器之外,通过向集群添加控制器来扩展 Kubernetes。

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

  • 持久卷 (Persistent Volume)

    一个 API 对象,表示集群中的一块存储。作为一个通用的、可插拔的资源提供,其生命周期独立于任何单个 Pod 的生命周期。

    [+]

    PersistentVolume (PV) 提供了一个 API,它抽象了存储如何提供与如何消耗的细节。在可以提前创建存储(静态预置)的场景中,直接使用 PV。对于需要按需存储(动态预置)的场景,则使用 PersistentVolumeClaim (PVC)。

  • 持久卷声明 (Persistent Volume Claim)

    声明 PersistentVolume 中定义的存储资源,以便可以将其作为卷挂载到 容器 中。

    [+]

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

  • 平台开发者 (Platform Developer)

    根据项目需求定制 Kubernetes 平台的人员。

    [+]

    例如,平台开发者可以使用自定义资源通过聚合层扩展 Kubernetes API,为其特定的应用向其 Kubernetes 实例添加功能。一些平台开发者也是贡献者,他们开发扩展并贡献给 Kubernetes 社区。其他人开发闭源的商业或特定站点的扩展。

  • Pod

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

    [+]

    Pod 通常被设置为运行一个主容器。它也可以运行可选的 sidecar 容器,以添加日志等辅助功能。Pod 通常由 Deployment 管理。

  • Pod 中断 (Pod Disruption)

    Pod 中断 是节点上的 Pod 被自愿或非自愿终止的过程。

    [+]

    自愿中断是由应用程序所有者或集群管理员有意启动的。非自愿中断是非故意的,可能由诸如节点资源耗尽等不可避免的问题或意外删除触发。

  • Pod 中断预算
    也称为: PDB

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

    [+]

    非自愿中断无法通过 PDB 防止;但是它们会计入预算。

  • Pod 生命周期

    Pod 在其生命周期中经历的一系列状态。

    [+]

    Pod 生命周期 由 Pod 的状态或阶段定义。Pod 可能有五个阶段:Pending(等待)、Running(运行)、Succeeded(成功)、Failed(失败)和 Unknown(未知)。PodStatusphase 字段总结了 Pod 状态的高层描述。

  • Pod 优先级

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

    [+]

    Pod 优先级 提供了设置 Pod 调度优先级高于或低于其他 Pod 的能力——这是生产集群工作负载的重要功能。

  • Pod 安全策略

    启用对 Pod 创建和更新的细粒度授权。

    [+]

    一种集群级别的资源,控制 Pod 规约中对安全敏感的方面。PodSecurityPolicy 对象定义了一组 Pod 必须满足的条件才能被系统接受,以及相关字段的默认值。Pod 安全策略控制作为可选的准入控制器实现。

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

  • Pod 模板
    也称为: pod template

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

    [+]

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

  • 抢占

    Kubernetes 中的抢占逻辑通过驱逐节点上现有的低优先级 Pod,来帮助处于 Pending 状态的 Pod 找到合适的 Node

    [+]

    如果一个 Pod 无法调度,调度器会尝试 抢占 低优先级的 Pod,以便使 Pending 状态的 Pod 能够调度。

  • PriorityClass

    PriorityClass 是一个命名的类别,用于指定属于该类别的 Pod 的调度优先级。

    [+]

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

  • 探针

    kubelet 对 Pod 中运行的容器周期性执行的检查,用于定义容器的状态和健康状况,并影响容器的生命周期。

    [+]

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

  • 代理

    在计算中,代理(Proxy)是作为远程服务中介的服务器。

    [+]

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

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

    你可以将 kube-proxy 作为普通的 userland 代理服务运行。如果你的操作系统支持,你可以改为在混合模式下运行 kube-proxy,使用更少的系统资源实现相同的总体效果。

  • QoS 类

    QoS 类(服务质量类)为 Kubernetes 提供了一种将集群中的 Pod 分类为几个类别的途径,并据此做出调度和驱逐的决策。

    [+]

    Pod 的 QoS 类在其创建时根据其计算资源请求和限制设置确定。QoS 类用于对 Pod 的调度和驱逐做出决策。Kubernetes 可以为 Pod 分配以下 QoS 类之一:Guaranteed(保证型)、Burstable(突发型)或 BestEffort(尽力而为型)。

  • 数量

    使用 SI 后缀表示小或大数字的整数形式。

    [+]

    Quantity 是使用紧凑的整数表示法和 SI 后缀来表示小或大数字。小数可以使用毫单位表示,而大数字可以使用千、兆或吉单位表示。

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

    可接受的十进制(10 的幂)单位包括 m (毫), k (千, 特意使用小写), M (兆), G (吉), T (太), P (拍), E (艾)。

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

  • RBAC(基于角色的访问控制)

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

    [+]

    RBAC 使用四种 Kubernetes 对象:

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

    更多信息,请参阅 RBAC

  • 副本

    一个 Pod 或一组 Pod 的拷贝或副本。副本通过维护多个相同的 Pod 实例来确保高可用性、可伸缩性和容错性。

    [+]

    副本在 Kubernetes 中常用于实现期望的应用程序状态和可靠性。它们使得工作负载可以在集群中的多个节点上进行扩缩和分布。

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

    副本管理使得 Kubernetes 集群能够实现高效的负载均衡、滚动更新和自愈能力。

  • ReplicaSet

    ReplicaSet (旨在) 确保在任何时候都有指定数量的副本 Pod 正在运行。

    [+]

    诸如 Deployment 之类的工作负载对象利用 ReplicaSet 来确保根据该 ReplicaSet 的规约,有指定数量的 Pod 在你的集群中运行。

  • ReplicationController

    一种工作负载资源,用于管理副本化应用程序,确保指定数量的 Pod 实例正在运行。

    [+]

    控制平面确保定义的 Pod 数量正在运行,即使某些 Pod 失败、你手动删除了 Pod 或错误地启动了过多的 Pod。

  • 资源(基础设施)

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

    Kubernetes 也使用术语 resource 来描述 API 资源

    [+]

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

    你还可以使用 动态资源分配 来自动管理复杂的资源分配。

  • 资源配额

    提供限制每个 Namespace 总资源消耗的约束。

    [+]

    按类型限制可在命名空间中创建的对象数量,以及该项目中资源可能消耗的计算资源总量。

  • 评审者

    负责评审项目代码质量和正确性的人员。

    [+]

    评审者既了解代码库,也熟悉软件工程原理。评审者身份通常限定在代码库的特定部分。

  • Secret

    存储敏感信息,例如密码、OAuth 令牌和 SSH 密钥。

    [+]

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

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

  • 安全上下文

    securityContext 字段定义了 Pod容器 的特权和访问控制设置。

    [+]

    securityContext 中,你可以定义:进程以哪个用户身份运行,进程以哪个组身份运行,以及特权设置。你还可以配置安全策略(例如:SELinux、AppArmor 或 seccomp)。

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

  • 选择器

    允许用户根据 标签 过滤资源列表。

    [+]

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

  • Service

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

    [+]

    Service 所面向的 Pod 集合(通常)由一个 选择器 确定。如果添加或移除更多 Pod,与选择器匹配的 Pod 集合会发生变化。Service 确保网络流量可以导向工作负载当前的 Pod 集合。

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

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

  • Service Catalog

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

    [+]

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

  • ServiceAccount

    为在 Pod 中运行的进程提供身份。

    [+]

    当 Pod 内部的进程访问集群时,它们会以特定的 ServiceAccount(例如 default)通过 API Server 进行认证。当你创建一个 Pod 时,如果不指定 ServiceAccount,它会自动被分配到同一 Namespace 中的默认 ServiceAccount。

  • Shuffle-sharding

    一种将请求分配到队列的技术,与对队列数量进行哈希取模相比,它提供了更好的隔离性。

    [+]

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

    这种简单的基于哈希的方案有一个特性:任何高强度流都会挤占所有哈希到同一队列的低强度流。为大量流提供良好的隔离需要大量的队列,这带来了问题。Shuffle-sharding 是一种更灵活的技术,可以更好地隔离低强度流免受高强度流的影响。Shuffle-sharding 的术语使用了发牌的比喻;每个队列都是一张象征性的牌。Shuffle-sharding 技术首先对识别流的请求特征进行哈希,生成一个具有数十位或更多位的哈希值。然后,将该哈希值用作熵源,以“洗牌”并“发一手牌”(队列)。检查所有发出的队列,并将请求放入其中最短的队列。在手牌大小适中的情况下,检查所有发出的牌的成本不高,并且给定的低强度流很有可能避开给定的高强度流的影响。手牌大小较大时,检查发出的队列成本较高,低强度流更难以避开一组高强度流的集体影响。因此,应慎重选择手牌大小。

  • Sidecar 容器

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

    [+]

    Sidecar 容器就像普通的应用容器一样,但有不同的目的:sidecar 为主应用容器提供 Pod 本地服务。与 init 容器 不同,sidecar 容器在 Pod 启动后继续运行。

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

  • SIG(特别兴趣小组)

    集体管理大型 Kubernetes 开源项目某个持续活跃部分或方面的社区成员

    [+]

    SIG 中的成员对推进特定领域有共同兴趣,例如架构、API 机制或文档。SIG 必须遵守 SIG 治理准则,但可以有自己的贡献策略和沟通渠道。

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

  • Spec

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

    [+]

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

    不同对象(如 Pods、StatefulSets 和 Services)的 spec 各有不同,详细描述了容器、卷、副本、端口等设置,
    以及每个对象类型特有的其他规约。此字段封装了 Kubernetes 应为定义的
    对象维护的状态。

  • StatefulSet

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

    [+]

    Deployment 一样,StatefulSet 管理基于相同容器规约的 Pod。与 Deployment 不同,StatefulSet 为其每个 Pod 维护一个固定的身份。这些 Pod 由相同的规约创建,但它们不可互换:每个 Pod 都有一个持久的标识符,该标识符在任何重新调度中都会保留。

    如果你想使用存储卷为你的工作负载提供持久性,可以将 StatefulSet 作为解决方案的一部分。虽然 StatefulSet 中的单个 Pod 可能发生故障,但持久的 Pod 标识符使得更容易将现有卷与替换任何已失败 Pod 的新 Pod 匹配。

  • 静态 Pod

    由特定节点上的 kubelet 守护程序直接管理的 Pod

    [+]

    API Server 不对其进行观察。

    静态 Pod 不支持 临时容器

  • StorageClass

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

    [+]

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

  • sysctl

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

    [+]

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

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

  • Taint

    一个核心对象,由三个必需属性组成:key、value 和 effect。Taint 阻止将 Pod 调度到 节点 或节点组上。

    [+]

    Taint 和 toleration 协同工作,以确保 Pod 不会调度到不合适的节点上。一个或多个 Taint 应用于节点。节点只应调度对配置的 Taint 具有匹配 toleration 的 Pod。

  • Toleration

    一个核心对象,由三个必需属性组成:key、value 和 effect。Toleration 允许将 Pod 调度到具有匹配 Taint 的节点或节点组上。

    [+]

    Toleration 和 Taint 协同工作,以确保 Pod 不会调度到不合适的节点上。一个或多个 toleration 应用于 Pod。Toleration 表示 Pod 被允许(但不要求)调度到具有匹配 Taint 的节点或节点组上。

  • UID

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

    [+]

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

  • 上游(消歧)

    可能指:核心 Kubernetes 或仓库从中 Fork 出的源仓库。

    [+]
    • Kubernetes 社区中:对话中经常使用 上游 来指代核心 Kubernetes 代码库,通用生态系统、其他代码或第三方工具都依赖于它。例如,社区成员 可能建议将某个功能移至上游,以便它成为核心代码库的一部分,而不是作为插件或第三方工具存在。
    • GitHubgit 中:习惯上将源仓库称为 上游,而被 Fork 的仓库则被视为 下游
  • 用户命名空间

    模拟 root 的内核功能。用于“无 root 容器”。

    [+]

    用户命名空间是 Linux 内核的一个特性,允许非 root 用户模拟超级用户(“root”)权限,例如以便在容器外部不是超级用户的情况下运行容器。

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

    在用户命名空间的上下文中,命名空间是 Linux 内核的一个特性,而不是 Kubernetes 意义上的命名空间

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

    [+]

    Kubernetes 卷的生命周期与包含它的 Pod 的生命周期相同。因此,卷的生命周期比 Pod 中运行的任何容器都长,并且卷中的数据在容器重启后仍然保留。

    更多信息,请参阅 存储

  • 卷插件

    卷插件使得存储能够集成到 Pod 中。

    [+]

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

  • Watch

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

    [+]

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

    更多信息,请参阅API Concepts 中的高效变更检测

  • WG (工作组)

    协助委员会、SIG或跨 SIG 合作开展短期、范围狭窄或独立的项目讨论和/或实施。

    [+]

    工作组是一种组织人们完成特定任务的方式。

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

  • 工作负载 (Workload)

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

    [+]

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

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

最后修改时间:2024 年 4 月 20 日太平洋标准时间下午 7:09:准备用于 vanilla Docsy 的词汇表页面 (2f3602cef0)