术语表
本词汇表定义了本书中使用的一些最常见的 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 分布式数据存储,运行于控制平面。为了获得更高性能和高可用性,可以部署到独立的集群上。 |
| ConfigMap | Kubernetes 对象,用于保存非敏感配置数据。这是一种在不编辑镜像的情况下,于运行时向通用容器添加自定义配置数据的绝佳方式。 |
| 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 集群中用作集群存储。 |
| Ingress | API 资源,通过单个面向外部的 LoadBalancer Service 暴露多个内部 Service。在第七层工作,实现基于路径和主机的 HTTP 路由。 |
| Ingress class(Ingress 类) | API 资源,允许你在集群上指定多个不同的 Ingress 控制器。 |
| Init container(Init 容器) | 一种专门的容器,在主应用容器启动之前运行并完成。常用于检查或初始化主应用容器的环境。 |
| JSON | JavaScript 对象表示法。Kubernetes 使用的首选数据发送和存储格式。 |
| K8s | Kubernetes 的简写形式。“8” 替代了 “Kubernetes” 中 “K” 和 “s” 之间的八个字符。发音为 “Kates”。这就是为什么人们说 Kubernetes 的女朋友叫 Kate 的原因。 |
| kubectl | Kubernetes 命令行工具。向 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 结合使用可实现动态卷创建。 |
| Pod | Kubernetes 上最小的调度单元。在 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 和其他酷炫技术。
您可以通过以下所有方式联系我:
- Twitter: twitter.com/nigelpoulton
- LinkedIn: linkedin.com/in/nigelpoulton
- Bluesky: @nigelpoulton.com
- 网站: nigelpoulton.com
- YouTube: youtube.com/nigelpoulton
反馈与评论
书籍的成败依赖于评论和评分。
我花了超过一年的时间撰写本书并保持其内容更新。因此,如果您能在亚马逊、Goodreads 或您购买本书的任何平台留下评论,我将不胜感激。