标准化词汇表
This glossary is intended to be a comprehensive, standardized list of Kubernetes terminology. It includes technical terms that are specific to K8s, as well as more general terms that provide useful context.
Filter terms according to their tags:
.
The inner components of Kubernetes.
A resource type that Kubernetes supports by default.
Supported customizations of Kubernetes.
Relevant for a first-time user of Kubernetes.
How Kubernetes components talk to each other (and to programs outside the cluster).
Starting and maintaining Kubernetes.
Keeping Kubernetes applications safe and secure.
How Kubernetes applications handle persistent data.
Software that makes Kubernetes easier or better to use.
Represents a common type of Kubernetes user.
Applications running on Kubernetes.
Architecture
Core Object
Extension
Fundamental
Networking
Operation
Security
Storage
Tool
User Type
Workload
Select all
Deselect all
Click on the [+] indicators below to get a longer explanation for any particular term.
容器网络接口 (CNI) 插件是遵循 appc/CNI 协议的一类网络插件。
[+]
想了解 Kubernetes 和 CNI 请参考 “网络插件” 。
ConfigMap 是一种 API 对象,用来将非机密性的数据保存到健值对中。使用时可以用作环境变量、命令行参数或者存储卷中的配置文件。
[+]
管理定期运行的 Job 。
[+]
Cronjob 对象类似 crontab 文件中的一行命令,它声明了一个遵循 Cron 格式的调度任务。
CustomResourceDefinition LINK
通过定制化的代码给您的 Kubernetes API 服务器增加资源对象,而无需编译完整的定制 API 服务器。
[+]
当 Kubernetes 公开支持的 API 资源不能满足您的需要时,定制资源对象(Custom Resource Definitions)让您可以在您的环境上扩展 Kubernetes API。
Deployment 是管理应用副本的 API 对象。
[+]
Helm Chart 是一组预先配置的 Kubernetes 资源所构成的包,可以使用 Helm 工具对其进行管理。
[+]
Chart 提供了一种可重现的用来创建和共享 Kubernetes 应用的方法。
单个 Chart 可用来部署简单的系统(例如一个 memcached Pod),也可以用来部署复杂的系统(例如包含 HTTP 服务器、数据库、缓存等组件的完整 Web 应用堆栈)。
Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。
[+]
Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟托管。
Istio 是个开放平台(非 Kubernetes 特有),提供了一种统一的方式来集成微服务、管理流量、实施策略和汇总度量数据。
[+]
添加 Istio 时不需要修改应用代码。它是基础设施的一层,介于服务和网络之间。当它和服务的 Deployment 相结合时,就构成了通常所谓的服务网格(Service Mesh)。Istio 的控制面抽象掉了底层的集群管理平台,这一集群管理平台可以是 Kubernetes、Mesosphere 等。
Job 是需要运行完成的确定性的或批量的任务。
[+]
kops 是一个命令行工具,可以帮助您创建、销毁、升级和维护生产级,高可用性的 Kubernetes 集群。*注意:官方仅支持 AWS,GCE 和 VMware vSphere 的支持还处于 alpha 阶段*。
[+]
kops
为您的集群提供了:
全自动化安装
基于 DNS 的集群标识
自愈功能:所有组件都在自动伸缩组(Auto-Scaling Groups)中运行
有限的操作系统支持 (推荐使用 Debian,支持 Ubuntu 16.04,试验性支持 CentOS & RHEL)
高可用 (HA) 支持
直接提供或者生成 Terraform 清单文件的能力
您也可以将自己的集群作为一个构造块,使用
Kubeadm用来快速安装 Kubernetes 并搭建安全稳定的集群的工具。
构造集群。kops
是建立在 kubeadm 之上的。
用来快速安装 Kubernetes 并搭建安全稳定的集群的工具。
[+]
您可以使用 kubeadm 安装控制面和工作节点组件。
一个在集群中每个节点上运行的代理。它保证容器都运行在 Pod 中。
[+]
kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs 中描述的容器处于运行状态且健康。kubelet 不会管理不是由 Kubernetes 创建的容器。
Kubernetes API 是通过 RESTful 接口提供 Kubernetes 功能服务并负责集群状态存储的应用程序。
[+]
Kubernetes 资源和”意向记录”都是作为 API 对象储存的,并可以通过对 API 的 RESTful 调用进行修改。
API 允许以声明方式管理配置。
用户可以直接和 Kubernetes API 交互,也可以通过 kubectl
这样的工具进行交互。
核心的 Kubernetes API 是很灵活的,可以扩展以支持定制资源。
Minikube 是用来在本地运行 Kubernetes 的一种工具。
[+]
Minikube 在用户计算机上的一个虚拟机内运行单节点 Kubernetes 集群。
为 Pod 的创建和更新操作启用细粒度的授权。
[+]
Pod 安全策略是集群级别的资源,它控制着 Pod 规约中的安全性敏感的内容。
PodSecurityPolicy
对象定义了一组条件以及相关字段的默认值,Pod 运行时必须满足这些条件。Pod 安全策略控制实现上体现为一个可选的准入控制器。
Pod 水平自动扩缩器(Horizontal Pod Autoscaler)是一种 API 资源,它根据目标 CPU 利用率或自定义度量目标扩缩 Pod 副本的数量。
[+]
PodPreset 是一种 API 对象,在创建 Pod 时将诸如 Secret、卷挂载和环境变量之类的信息注入到该 Pod 中。
[+]
此 API 对象使用标准选择器选择 Pod 并向其中注入信息。这允许 podspec 定义是非特定的,从而将 podspec 与环境特定的配置解耦。
ReplicaSet 是下一代副本控制器。
[+]
ReplicaSet 就像 ReplicationController 那样,确保一次运行指定数量的 Pod 副本。ReplicaSet 支持新的基于集合的选择器需求(在标签的用户指南中有相关描述),而副本控制器只支持基于等值的选择器需求。
Replication Controller LINK
Replication Controller 是 Kubernetes 的一种服务,用来确保给定个数的 Pod 一直处于运行状态。
[+]
Replication Controller 会基于设定值自动增删 Pod 的实例。如果 Pod 被误删除或者启动实例过多,Replication Controller 允许 Pod 的实例个数恢复到设定值。
Secret 用于存储敏感信息,如密码、OAuth 令牌和 SSH 密钥。
[+]
Service 是一种 API 资源对象,它描述了应用的访问方式,例如包含一组 Pod 的应用如何进行访问,Service 还可以描述端口和负载均衡。
[+]
Service 的接入点可以是集群内部的也可以是集群外部的。
StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供*序号和唯一性保证*。
[+]
和
DeploymentDeployment 是管理应用副本的 API 对象。
相同的是,StatefulSet 管理了基于相同容器定义的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个 Pod 维护了一个固定的 ID。这些 Pod 是基于相同的声明来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。
StatefulSet 和其他控制器使用相同的工作模式。你在 StatefulSet 对象 中定义你期望的状态,然后 StatefulSet 的 控制器 就会通过各种更新来达到那种你想要的状态。
A StorageClass provides a way for administrators to describe different available storage types.
–>
title: 存储类别
id: storageclass
date: 2018-04-12
full_link: /docs/concepts/storage/storage-classes
short_description: >
StorageClass 是管理员用来描述不同的可用存储类型的一种方法。
aka:
tags:
- core-object
- storage
StorageClass 是管理员用来描述不同的可用存储类型的一种方法。
[+]
由 Kubernetes 系统生成、用来唯一标识对象的字符串。
[+]
在 Kubernetes 集群的整个生命周期中,每个被创建的对象都有不同的 UID。UID 用来区分相似实体的历史事件。
Docker 是一种可以提供操作系统级别虚拟化(也称作容器)的软件技术
[+]
Docker 使用了 Linux 内核中的资源隔离特性(如 cgroup 和内核命名空间)以及支持联合文件系统(如 OverlayFS 和其他),允许多个相互独立的“容器”一起运行在同一 Linux 实例上,从而避免启动和维护虚拟机(VMs)的开销。
etcd 是兼具一致性和高可用性的键值数据库,可以作为保存 Kubernetes 所有集群数据的后台数据库。
[+]
您的 Kubernetes 集群的 etcd 数据库通常需要有个备份计划。要了解 etcd 更深层次的信息,请参考 etcd 文档 。
主节点上负责提供 Kubernetes API 服务的组件;它是 Kubernetes 控制面的前端。
[+]
kube-apiserver 在设计上考虑了水平扩缩的需要。
换言之,通过部署多个实例可以实现扩缩。
参见构造高可用集群 。
kube-proxy
是集群中每个节点上运行的网络代理。
[+]
kube-proxy
负责转发请求。kube-proxy
能够提供 TCP 和 UDP 的流转发,也可为一组后端功能点提供轮转式 TCP 和 UDP 转发。
主节点上的组件,该组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。
[+]
调度决策考虑的因素包括单个 Pod 和 Pod 集合的资源需求、硬件/软件/策略约束、亲和性和反亲和性规范、数据位置、工作负载间的干扰和最后时限。
云控制器管理器是 1.8 的 alpha 特性。在未来发布的版本中,这是将 Kubernetes 与任何其他云集成的最佳方式。
[+]
Kubernetes v1.6 包含一个新的可执行文件叫做 cloud-controller-manager。cloud-controller-manager 是一个守护进程,其中嵌入了特定于某云环境的控制环。
这些特定于云环境的控制环最初位于 kube-controller-manager 中。
由于云供应商的开发和发布节奏与 Kubernetes 项目不同步,将特定于供应商的代码抽象到 cloud-controller-manager 可执行文件可以允许云供应商独立于核心 Kubernetes 代码进行演进。
应用容器运行前必须先运行完成的一个或多个初始化容器。
[+]
初始化(init)容器像常规应用容器一样,只有一点不同:初始化(init)容器必须在应用容器启动前运行完成。Init 容器的运行顺序:一个初始化(init)容器必须在下一个初始化(init)容器开始前运行完成。
客户端提供的字符串,用来指代资源 URL 中的对象,如 /api/v1/pods/some-name
。
[+]
对给定资源类型 (kind) 而言,同一时刻只能有一个对象使用给定的名称。不过,如果该对象被删除,则可以使用同一名称创建新新对象。
命名空间是 Kubernetes 为了在同一物理集群上支持多个虚拟集群而使用的一种抽象。
[+]
命名空间用来组织集群中对象,并为集群资源划分提供了一种方法。同一命名空间内的资源名称必须唯一,但跨命名空间时不作要求。
容器是可移植、可执行的轻量级的镜像,镜像中包含软件及其相关依赖。
[+]
容器使应用和底层的主机基础设施解耦,降低了应用在不同云环境或者操作系统上的部署难度,便于应用扩展。
容器存储接口 (CSI)定义了存储系统暴露给容器的标准接口。
[+]
容器环境变量提供了运行容器化应用所必须的一些重要信息。
[+]
定制 Kubernetes 平台以满足自己的项目需求的人。
[+]
编写可以在 Kubernetes 集群上运行的应用的人。
[+]
应用开发者专注于应用的某一部分。他们工作范围的大小有明显的差异。
应用架构师是负责应用高级设计的人。
[+]
应用架构师确保应用的实现允许它和周边组件进行可扩展的、可持续的交互。周边组件包括数据库、日志基础设施和其他微服务。
持久卷是代表集群中一块存储空间的 API 对象。 它是通用的、可插拔的、并且不受单个 Pod 生命周期约束的持久化资源。
[+]
持久卷(PersistentVolumes,PV)提供了一个 API,该 API 对存储的供应方式细节进行抽象,令其与使用方式相分离。
在提前创建存储(静态供应)的场景中,PV 可以直接使用。
在按需提供存储(动态供应)的场景中,需要使用 PersistentVolumeClaims (PVCs)。
申领持久卷中定义的存储资源,以便可以将其挂载为容器中的卷。
[+]
指定存储的数量,如何访问存储(只读、读写或独占)以及如何回收存储(保留、回收或删除)。存储本身的详细信息在 PersistentVolume 规范中。
[+]
数量是使用紧凑的整数表示法的小数或大数的表示,并带有国际计量单位制(SI)后缀。
小数用 milli 单位表示,而大数用 kilo、mega 或 giga 单位表示。
例如,数字 1.5
表示为1500m
,
而数字1000
表示为1k
,1000000
表示为1M
。
您还可以指定二进制表示法后缀; 数字 2048 可以写成2Ki
。
公认的十进制(10的幂)单位是 m
(milli)、k
(kilo,
有意小写)、M
(mega),G
(giga)、T
(terra)、P
(peta)、
E
(exa)。
公认的二进制(2的幂)单位是 Ki
(kibi)、 Mi
(mebi)、Gi
(gibi)、
Ti
(tebi)、 Pi
(pebi)、 Ei
(exbi)。
服务目录(Service Catalog)是一种扩展 API,它能让 Kubernetes 集群中运行的应用易于使用外部托管的的软件服务,例如云供应商提供的数据仓库服务。
[+]
用来为对象设置可标识的属性标记;这些标记对用户而言是有意义且重要的。
[+]
注解是以键值对的形式给资源对象附加随机的无法标识的元数据。
[+]
注解中的元数据可大可小,可以是结构化的也可以是非结构化的,并且能包含标签不允许使用的字符。像工具和软件库这样的客户端可以检索这些元数据。
网络策略是一种规范,规定了允许 Pod 组之间、Pod 与其他网络端点之间以怎样的方式进行通信。
[+]
网络策略帮助您声明式地配置允许哪些 Pod 之间接、哪些命名空间之间允许进行通信,并具体配置了哪些端口号来执行各个策略。NetworkPolicy
资源使用标签来选择 Pod,并定义了所选 Pod 可以接受什么样的流量。网络策略由网络提供商提供的并被 Kubernetes 支持的网络插件实现。请注意,当没有控制器实现网络资源时,创建网络资源将不会生效。
聚合层允许您在自己的集群上安装额外的 Kubernetes 风格的 API。
[+]
Kubernetes 中的工作机器称作节点。
[+]
证书是个安全加密文件,用来确认对 Kubernetes 集群访问的合法性。
[+]
证书可以让 Kubernetes 集群中运行的应用程序安全的访问 Kubernetes API。证书可以确认客户端是否被允许访问 API。
选择算符允许用户通过标签对一组资源对象进行筛选过滤。
[+]
镜像是保存的容器实例,它打包了应用运行所需的一组软件。
[+]
镜像是软件打包的一种方式,可以将镜像存储在容器镜像仓库、拉取到本地系统并作为应用来运行。
镜像中包含的元数据指明了运行什么可执行程序、是由谁构建的以及其他信息。
集群由一组被称作节点的机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。
[+]
配置、控制、监控集群的人。
[+]
<!–
Their primary responsibility is keeping a cluster up and running, which may involve periodic maintenance activities or upgrades.
NOTE: Cluster operators are different from the Operator pattern that extends the Kubernetes API.
–>
他们的主要责任是保持集群正常运行,可能需要进行周期性的维护和升级活动。
注意: 集群操作者不同于操作者模式(Operator Pattern) ,操作者模式是用来扩展 Kubernetes API 的。
集群架构师负责设计集群的基础设施,可能包含一个或多个 Kubernetes 集群。
[+]
集群架构师要具备分布式系统的最佳实践经验,例如:高可用性和安全性。
反馈
此页是否对您有帮助?
是
否
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes,
ask it on Stack Overflow . Open
an issue in the GitHub repo if you want to report a problem or
suggest an improvement .