术语表

本词汇表定义了本书中使用的一些最常见的 Kubernetes 相关术语。如果您认为我遗漏了任何重要内容,可以通过以下邮箱联系我:tkb@nigelpoulton.com

术语定义(根据Nigel)
Admission controller(准入控制器)代码,用于验证或变更资源以强制执行策略。作为API准入链的一部分,在认证和授权后立即运行。
Annotation(注解)对象元数据,可用于暴露 alpha 或 beta 功能,或与第三方系统集成。
API应用程序编程接口。在 Kubernetes 中,所有资源都在 API 中定义,该 API 是 RESTful 的,并通过 API 服务器暴露。
API group(API 组)一组相关的 API 资源。例如,网络资源通常位于 networking.k8s.io API 组中。
API resource(API 资源)所有 Kubernetes 对象(如 Pod、Deployment 和 Service)都在 API 中定义为资源。
API Server(API 服务器)通过 HTTPS 在安全端口上暴露 API。运行于控制平面。
Cloud controller manager(云控制器管理器)控制平面服务,用于与底层云平台集成。例如,创建 LoadBalancer Service 时,云控制器管理器会执行相关逻辑,以配置一个面向互联网的底层云负载均衡器。
Cloud native(云原生)一个含义丰富的术语,不同的人有不同的理解。云原生是一种设计、构建和使用现代应用及基础设施的方式。我个人认为,如果一个应用能够自愈、按需扩展、执行滚动更新,并能进行回滚,那么它就是云原生的。
Cluster(集群)一组工作节点和控制平面节点,协同工作以运行用户应用程序。
Cluster store(集群存储)控制平面特性,用于保存集群和应用的状态。通常基于 etcd 分布式数据存储,运行于控制平面。为了获得更高性能和高可用性,可以部署到独立的集群上。
ConfigMapKubernetes 对象,用于保存非敏感配置数据。这是一种在不编辑镜像的情况下,于运行时向通用容器添加自定义配置数据的绝佳方式。
Container(容器)运行现代应用的轻量级环境。每个容器都是一个虚拟操作系统,拥有自己的进程树、文件系统、共享内存等。一个容器运行一个应用进程。
Container Network Interface (CNI)(容器网络接口)可插拔接口,支持不同的网络拓扑和架构。第三方提供 CNI 插件,可实现覆盖网络、BGP 网络及其各种实现。
Container runtime(容器运行时)运行在每个集群节点上的低级软件,负责拉取容器镜像、启动容器、停止容器以及其他低级容器操作。通常是 containerd、Docker 或 cri-o。Docker 在 Kubernetes 1.20 被弃用,并在 1.24 中移除了支持。
Container Runtime Interface (CRI)(容器运行时接口)Kubernetes 的低级特性,使容器运行时具有可插拔性。通过 CRI,你可以根据需求选择最适合的容器运行时(Docker、containerd、cri-o、kata 等)。
Container Storage Interface (CSI)(容器存储接口)接口,使外部第三方存储系统能够与 Kubernetes 集成。存储供应商编写 CSI 驱动/插件,该插件以一组 Pod 的形式在集群上运行,并向集群和应用暴露存储系统的增强特性。
containerd行业标准容器运行时,用于大多数 Kubernetes 集群。由 Docker 公司捐赠给 CNCF。发音为 “container dee”。
Controller(控制器)控制平面进程,作为调谐循环运行,监视集群并进行必要的更改,以使集群的观察状态与期望状态匹配。
Control plane(控制平面)每个 Kubernetes 集群的大脑。包含 API、API 服务器、调度器、所有控制器等。这些组件运行在每个集群的所有控制平面节点上。
control plane node(控制平面节点)托管控制平面服务的集群节点。通常不运行用户应用程序。为实现高可用性,应部署 3 或 5 个。
cri-o容器运行时。常用于基于 OpenShift 的 Kubernetes 集群。
CRUD创建、读取、更新和删除这四种基本操作,许多存储系统使用。
Custom Resource Definition (CRD)(自定义资源定义)API 资源,用于将自定义资源添加到 Kubernetes API。
Data plane(数据平面)集群中托管用户应用程序的工作节点。
Deployment部署和管理一组无状态 Pod 的控制器。执行滚动更新和回滚,并能自愈。使用 ReplicaSet 控制器执行扩缩容和自愈操作。
Desired state(期望状态)集群和应用应有的状态。例如,一个应用微服务的期望状态可能是:5 个 xyz 容器副本,监听 8080/tcp 端口。对调谐至关重要。
Endpoints object(Endpoints 对象)与 Service 的标签选择器匹配的健康 Pod 的最新列表。基本上就是 Service 将要发送流量的 Pod 列表。最终可能被 EndpointSlices 取代。
etcd开源分布式数据库,在大多数 Kubernetes 集群中用作集群存储。
IngressAPI 资源,通过单个面向外部的 LoadBalancer Service 暴露多个内部 Service。在第七层工作,实现基于路径和主机的 HTTP 路由。
Ingress class(Ingress 类)API 资源,允许你在集群上指定多个不同的 Ingress 控制器。
Init container(Init 容器)一种专门的容器,在主应用容器启动之前运行并完成。常用于检查或初始化主应用容器的环境。
JSONJavaScript 对象表示法。Kubernetes 使用的首选数据发送和存储格式。
K8sKubernetes 的简写形式。“8” 替代了 “Kubernetes” 中 “K” 和 “s” 之间的八个字符。发音为 “Kates”。这就是为什么人们说 Kubernetes 的女朋友叫 Kate 的原因。
kubectlKubernetes 命令行工具。向 API 服务器发送命令,并通过 API 服务器查询状态。
Kubelet运行在每个集群节点上的主要 Kubernetes 代理。它监视 API 服务器以获取新的工作分配,并维护一条返回报告通道。
Kube-proxy运行在每个集群节点上,实现低级规则,处理从 Service 到 Pod 的流量路由。你将流量发送到稳定的 Service 名称,kube-proxy 确保流量到达 Pod。
Label(标签)应用于对象以进行分组的元数据。与标签选择器配合使用,将 Pod 与更高级别的控制器匹配。例如,Service 基于一组匹配标签将流量发送到 Pod。
Label selector(标签选择器)用于标识要对哪些 Pod 执行操作。例如,当 Deployment 执行滚动更新时,它根据其标签选择器知道要更新哪些 Pod——只有标签与 Deployment 标签选择器匹配的 Pod 才会被替换和更新。
Manifest file(清单文件)包含一个或多个 Kubernetes 对象配置的 YAML 文件。例如,Service 清单文件通常是一个 YAML 文件,包含 Service 对象的配置。当你将清单文件发布到 API 服务器时,其配置会被部署到集群。
Microservices(微服务)现代应用的一种设计模式。应用功能被拆分成各自独立的小应用(微服务/容器),并通过 API 进行通信。它们协同工作,形成一个有用的应用。
Namespace(命名空间)将单个 Kubernetes 集群划分为多个虚拟集群的方法。适用于在单个集群上应用不同的配额和访问控制策略。不适用于强工作负载隔离。
Node(节点)也称为工作节点。集群中运行用户应用程序的节点。运行 kubelet 进程、容器运行时和 kube-proxy。
Observed state(观察状态)也称为当前状态或实际状态。集群和运行应用的最新视图。控制器始终致力于使观察状态与期望状态匹配。
Orchestrator(编排器)一种部署和管理应用的软件。现代应用由许多协同工作的小型微服务组成,形成一个有用的应用。Kubernetes 编排/管理这些微服务,保持其健康,进行扩缩容等……Kubernetes 是基于容器的微服务应用事实上的编排器。
Persistent Volume (PV)(持久卷)Kubernetes 对象,用于映射集群上的存储卷。外部存储资源必须先映射到 PV,才能被应用使用。
Persistent Volume Claim (PVC)(持久卷声明)类似于允许应用使用持久卷 (PV) 的票证/凭证。没有有效的 PVC,应用无法使用 PV。与 StorageClasses 结合使用可实现动态卷创建。
PodKubernetes 上最小的调度单元。在 Kubernetes 上运行的每个容器都必须运行在 Pod 内。Pod 提供共享执行环境——IP 地址、卷、共享内存等。
RBAC基于角色的访问控制。授权模块,决定经过身份验证的用户是否可以针对集群资源执行操作。
Reconciliation loop(调谐循环)控制器进程,通过 API 服务器监视集群状态,确保观察状态与期望状态匹配。大多数控制器(如 Deployment 控制器)作为调谐循环运行。
ReplicaSet作为控制器运行,执行自愈和扩缩容。由 Deployment 使用。
REST表现层状态转移。创建基于 Web 的 API 时最常用的架构。使用常见的 HTTP 方法(GET、POST、PUT、PATCH、DELETE)来操作和存储对象。
Secret(密钥)类似于 ConfigMap,但用于敏感配置数据。一种将敏感数据存储在容器镜像外部,并在运行时注入容器的方法。
Service(大写 S)Kubernetes 对象,用于为运行在 Pod 中的应用提供网络访问。通过在 Pod 集前放置一个 Service,Pod 可以故障、扩缩容和替换,而访问它们的网络端点保持不变。可以与云平台集成并配置面向互联网的负载均衡器。
Service mesh(服务网格)基础设施软件,支持 Pod 到 Pod 流量的加密、增强的网络遥测和高级路由等功能。与 Kubernetes 一起使用的常见服务网格包括 Consul、Istio、Linkerd 和## 结语

原文缺失

结语部分的原文未在本次提供。请提供第二部分原文以继续翻译。

术语表

术语定义(根据 Nigel)
存储类(Storage Class,SC)在集群上创建不同存储层级/类别的方式。例如,可以有一个名为“fast”的存储类,用于创建基于 NVMe 的存储;另一个名为“medium-three-site”的存储类,用于创建跨三个站点复制的较慢存储。
卷(Volume)持久化存储的通用术语。
WebAssembly(Wasm)一种安全的沙箱化虚拟机格式,用于执行应用程序。
工作节点(Worker node)运行用户应用程序的集群节点。有时简称为“节点”或“工作节点”。
YAML另一种标记语言(Yet Another Markup Language)。通常用于编写 Kubernetes 配置文件的配置语言。它是 JSON 的超集。

结语

感谢您阅读本书。现在您已准备好云原生世界中大展身手。

关于封面

我非常喜欢本书的封面,也感谢数百位投票支持其设计的朋友。

左侧的 YAML 代码代表本书的技术性质。Kubernetes 轮盘代表主要主题。右侧的垂直符号是云原生图标,灵感来自《黑客帝国》电影中的数字雨代码。此外,其中还隐藏了一条用《星际迷航》中博格语写的密文。

关于本书图表

以下 GitHub 仓库中提供了一套出色的 Kubernetes 社区图标:

https://github.com/kubernetes/community/tree/master/icons

我很喜欢这些图标,并在博客和视频课程中大量使用它们。然而,它们在本书的印刷版中效果不佳。因此,我创作了一套类似的、适用于本书的图标。创作它们花费了很长时间,希望您喜欢。

我并非试图取代社区图标,也不是说它们不够好。它们只是不适合本书的印刷版本。

与我联系

我很乐意与您交流,讨论 Kubernetes 和其他酷炫技术。

您可以通过以下所有方式联系我:

反馈与评论

书籍的成败依赖于评论和评分。

我花了超过一年的时间撰写本书并保持其内容更新。因此,如果您能在亚马逊、Goodreads 或您购买本书的任何平台留下评论,我将不胜感激。