想要很好掌握k8s,最好还是先掌握k8s基础的相关知识,k8s的标准化词汇则是基础知识重中之重了,熟悉标准化词汇,方便我们理解工作中遇到的k8s资源,和排查遇到的问题。

API GroupLINK

Kubernetes API 中的一组相关路径。

通过更改 API server 的配置,可以启用或禁用每个 API Group。你还可以禁用或启用指向特定资源的路径。API group 使扩展 Kubernetes API 更加的容易。API group 在 REST 路径和序列化对象的 apiVersion 字段中指定。

cgroup (控制组)LINK

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

Cgroup 是一个 Linux 内核特性,对一组进程的资源使用(CPU、内存、磁盘 I/O 和网络等)进行限制、审计和隔离。

CustomResourceDefinition

通过定制化的代码给您的 Kubernetes API 服务器增加资源对象,而无需编译完整的定制 API 服务器。

当 Kubernetes 公开支持的 API 资源不能满足您的需要时,定制资源对象(Custom Resource Definitions)让您可以在您的环境上扩展 Kubernetes API。

DaemonSetLINK

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

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

Deployment

Deployment 是管理应用副本的 API 对象。

应用的每个副本就是一个 Pod,并且这些 Pod 会分散运行在集群的节点上。

docker

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

Docker 使用了 Linux 内核中的资源隔离特性(如 cgroup 和内核命名空间)以及支持联合文件系统(如 OverlayFS 和其他),允许多个相互独立的“容器”一起运行在同一 Linux 实例上,从而避免启动和维护虚拟机(VMs)的开销。

JobLINK

Job 是需要运行完成的确定性的或批量的任务。

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

kube-apiserverLINK

主节点上负责提供 Kubernetes API 服务的组件;它是 Kubernetes 控制面的前端。

kube-apiserver 在设计上考虑了水平扩缩的需要。 换言之,通过部署多个实例可以实现扩缩。 参见构造高可用集群

kube-controller-managerLINK

在主节点上运行控制器的组件。

从逻辑上讲,每个控制器都是一个单独的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。

kube-proxy

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

kube-proxy 维护节点上的网络规则。这些网络规则允许从集群内部或外部的网络会话与 Pod 进行网络通信。

如果操作系统提供了数据包过滤层并可用的话,kube-proxy会通过它来实现网络规则。否则,kube-proxy 仅转发流量本身。

Kubectl

kubectl 是用来和 Kubernetes API 服务器进行通信的命令行工具。

您可以使用 kubectl 创建、检查、更新和删除 Kubernetes 对象。

Kubelet

一个在集群中每个节点上运行的代理(注意和kube-proxy的区别)。它保证容器都运行在 Pod 中。

kubelet 接收一组通过各类机制提供给它的 PodSpecs,确保这些 PodSpecs 中描述的容器处于运行状态且健康。kubelet 不会管理不是由 Kubernetes 创建的容器。

Kubernetes API

Kubernetes API 是通过 RESTful 接口提供 Kubernetes 功能服务并负责集群状态存储的应用程序。

Kubernetes 资源和"意向记录"都是作为 API 对象储存的,并可以通过对 API 的 RESTful 调用进行修改。 API 允许以声明方式管理配置。 用户可以直接和 Kubernetes API 交互,也可以通过 kubectl 这样的工具进行交互。 核心的 Kubernetes API 是很灵活的,可以扩展以支持定制资源。

LimitRangeLINK

提供约束来限制命名空间中每个 容器 或 Pod 的资源消耗。

LimitRange 按照类型来限制命名空间中对象能够创建的数量,以及单个 容器 或 Pod 可以请求/使用的计算资源量。

MasterLINK

遗留术语,作为运行 控制平面 的 节点 的同义词使用。

该术语仍被一些配置工具使用,如 kubeadm 以及托管的服务,为 节点 添加 kubernetes.io/role 的 标签,以及管理控制平面 Pod 的调度。

Minikube

Minikube 是用来在本地运行 Kubernetes 的一种工具(用于搭建K8s学习环境)。

Minikube 在用户计算机上的一个虚拟机内运行单节点 Kubernetes 集群。

Pod

Pod 是 Kubernetes 的原子对象。Pod 表示您的集群上一组正在运行的容器

通常创建 Pod 是为了运行单个主容器。Pod 还可以运行可选的挂斗(sidecar)容器,以添加诸如日志记录之类的补充特性。通常用 Deployment 来管理 Pod。

Pod 安全策略

为 Pod 的创建和更新操作启用细粒度的授权。

Pod 安全策略是集群级别的资源,它控制着 Pod 规约中的安全性敏感的内容。 PodSecurityPolicy对象定义了一组条件以及相关字段的默认值,Pod 运行时必须满足这些条件。Pod 安全策略控制实现上体现为一个可选的准入控制器。

Pod 生命周期

关于 Pod 在其生命周期中处于哪个阶段的更高层次概述。

Pod 生命周期 是关于 Pod 在其生命周期中处于哪个阶段的更高层次概述。Pod 的status 字段是 PodStatus 对象, 该对象的 phase 字段包含了下面的状态: Running、Pending、Succeeded、Failed、Unknown、Completed 或 CrashLoopBackOff。

QoS 类

QoS Class(Quality of Service Class)为 Kubernetes 提供了一种将集群中的 Pod 分为几个类型并做出有关调度和驱逐决策的方法。

Pod 的 QoS 类是基于 Pod 在创建时配置的计算资源请求和限制。QoS 类用于制定有关 Pod 调度和逐出的决策。 Kubernetes 可以为 Pod 分配以下 QoS 类:GuaranteedBurstable 或者 BestEffort

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

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

RBAC 使用 角色 (包含权限规则)和 角色绑定 (将角色中定义的权限授予一组用户)。

ReplicaSet

ReplicaSet 是下一代副本控制器。

ReplicaSet 就像 ReplicationController 那样,确保一次运行指定数量的 Pod 副本。ReplicaSet 支持新的基于集合的选择器需求(在标签的用户指南中有相关描述),而副本控制器只支持基于等值的选择器需求。

Service

将运行在一组 Pods 上的应用程序公开为网络服务的抽象方法。

服务所针对的Pod集(通常)由 selector 确定。 如果添加或删除了更多Pod,则与选择器匹配的Pod集将发生变化。 该服务确保可以将网络流量定向到该工作负载的当前Pod集。

shuffle sharding

A technique for assigning requests to queues that provides better isolation than hashing modulo the number of queues.

We are often concerned with insulating different flows of requests from each other, so that a high-intensity flow does not crowd out low-intensity flows. A simple way to put requests into queues is to hash some characteristics of the request, modulo the number of queues, to get the index of the queue to use. The hash function uses as input characteristics of the request that align with flows. For example, in the Internet this is often the 5-tuple of source and destination address, protocol, and source and destination port.

That simple hash-based scheme has the property that any high-intensity flow will crowd out all the low-intensity flows that hash to the same queue. Providing good insulation for a large number of flows requires a large number of queues, which is problematic. Shuffle sharding is a more nimble technique that can do a better job of insulating the low-intensity flows from the high-intensity flows. The terminology of shuffle sharding uses the metaphor of dealing a hand from a deck of cards; each queue is a metaphorical card. The shuffle sharding technique starts with hashing the flow-identifying characteristics of the request, to produce a hash value with dozens or more of bits. Then the hash value is used as a source of entropy to shuffle the deck and deal a hand of cards (queues). All the dealt queues are examined, and the request is put into one of the examined queues with the shortest length. With a modest hand size, it does not cost much to examine all the dealt cards and a given low-intensity flow has a good chance to dodge the effects of a given high-intensity flow. With a large hand size it is expensive to examine the dealt queues and more difficult for the low-intensity flows to dodge the collective effects of a set of high-intensity flows. Thus, the hand size should be chosen judiciously.

StatefulSet

StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供序号和唯一性保证

和 Deployment 相同的是,StatefulSet 管理了基于相同容器定义的一组 Pod。但和 Deployment 不同的是,StatefulSet 为它们的每个 Pod 维护了一个固定的 ID。这些 Pod 是基于相同的声明来创建的,但是不能相互替换:无论怎么调度,每个 Pod 都有一个永久不变的 ID。

StatefulSet 和其他控制器使用相同的工作模式。你在 StatefulSet 对象 中定义你期望的状态,然后 StatefulSet 的 控制器 就会通过各种更新来达到那种你想要的状态。

UID

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

在 Kubernetes 集群的整个生命周期中创建的每个对象都有一个不同的 uid,它旨在区分类似实体的历史事件。

临时容器LINK

您可以在 Pod 中临时运行的一种 容器 类型

如果想要调查运行中有问题的 Pod,可以向该 Pod 添加一个临时容器并进行诊断。临时容器没有资源或调度保证,因此不应该使用它们来运行任何部分的工作负荷本身。

初始化容器

应用容器运行前必须先运行完成的一个或多个初始化容器。

初始化(init)容器像常规应用容器一样,只有一点不同:初始化(init)容器必须在应用容器启动前运行完成。Init 容器的运行顺序:一个初始化(init)容器必须在下一个初始化(init)容器开始前运行完成。

Volume卷

包含可被 pod 中容器访问的数据的目录。

每个 Kubernetes 卷在所处的pod 存在期间保持存在状态。 因此,卷的生命期会超出 pod 中运行的容器, 并且保证容器重启之后仍保留数据。

Name名称

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

一次只能有一个给定类型的对象具有给定的名称。但是,如果删除对象,则可以创建同名的新对象。

Namespace命名空间

命名空间是 Kubernetes 为了在同一物理集群上支持多个虚拟集群而使用的一种抽象。

命名空间用来组织集群中对象,并为集群资源划分提供了一种方法。同一命名空间内的资源名称必须唯一,但跨命名空间时不作要求。

Container容器

容器是可移植、可执行的轻量级的镜像,镜像中包含软件及其相关依赖。

容器使应用和底层的主机基础设施解耦,降低了应用在不同云环境或者操作系统上的部署难度,便于应用扩展

Container Environment VariablesLINK容器环境变量

容器环境变量提供了运行容器化应用所必须的一些重要信息。

容器环境变量为运行中的容器化应用提供必要的信息,同时还提供与 容器 重要资源相关的其他信息,例如:文件系统信息、容器自身的信息以及其他像服务端点(Service endpoints)这样的集群资源信息。

容器运行时接口 (CRI)

容器运行时接口 (CRI) 是一组与节点上 kubelet 集成的容器运行时 API

更多信息, 请参考 容器运行时接口 API 与规格。

容器运行环境(Container Runtime)

容器运行环境是负责运行容器的软件。

Kubernetes 支持多个容器运行环境: Docker、 containerdcri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)

Toleration容忍度

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

容忍度 和 污点 共同作用以确保不会将 Pod 调度在不适合的节点上。在同一 pod 上可以设置一个或者多个容忍度。容忍度表示在匹配节点或节点组上的 污点 调度 pod 是允许的(但不必要)。

Workload工作负载

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

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

例如,具有 Web 服务器和数据库的工作负载可能在一个 StatefulSet 中运行数据库,而 Web 服务器运行在 Deployment

Disruption干扰LINK

干扰是指导致一个或者多个 Pod 服务停止的事件。 干扰会影响工作负载资源,比如 Deployment 这种依赖于受影响 Pod 的资源。

如果您作为一个集群操作人员,销毁了一个从属于某个应用的 Pod, Kubernetes 视之为 自愿干扰。如果由于节点故障 或者影响更大区域故障的断电导致 Pod 离线,Kubrenetes 视之为 非愿干扰

Applications应用

The layer where various containerized applications run. aka: tags: - fundamental --- -- 各种容器化应用运行所在的层。 [-]

各种容器化应用运行所在的层

Extensions扩展组件

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

大多数集群管理员会使用托管的 Kubernetes 或其某种发行包。因此,大多数 Kubernetes 用户将需要安装 扩展组件,较少用户会需要编写新的扩展组件。

Controller控制器

控制器通过 apiserver 监控集群的公共状态,并致力于将当前状态转变为期望的状态。

Kubernetes 当前提供的部分控制器例子包括:副本控制器(replication controller)、端点控制器(endpoints controller)、命名空间控制器(namespace controller)、服务账号控制器(serviceaccounts controller)。

Control Plane控制平面

The container orchestration layer that exposes the API and interfaces to define, deploy, and manage the lifecycle of containers. aka: tags: - fundamental --- -- 容器编排层,它暴露 API 和接口来定义、部署容器和管理容器的生命周期。 

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

Data Plane数据平面

提供诸如 CPU,内存,网络和存储的能力,以便容器可以运行并连接到网络。

日志LINK

日志是 集群 或应用程序记录的事件列表.

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

ServiceAccount服务账户LINK

为在 Pod 中运行的进程提供标识。

当 Pod 中的进程访问集群时,API 服务器将它们作为特定的服务帐户进行身份验证,例如 default。当您创建 Pod 时,如果您没有指定服务帐户,它将在相同的命名空间 命名空间 中自动分配 default 服务账户。

Label标签

用来为对象设置可标识的属性标记;这些标记对用户而言是有意义且重要的。

标签是一些关联到 Pods 这类对象上的键值对。 它们通常用来组织和选择对象子集。

Taint污点

一个核心对象,由三个必需的属性组成:键,值和效果。污点会阻止在节点或节点组上调度 Pod。

污点和 容忍度 一起工作,以确保不会将 Pod 调度到不适合的节点上。一个或多个污点应用于 节点。节点应该仅能调度那些带着能与污点相匹配容忍度的 pod。

Annotation注解

注解是以键值对的形式给资源对象附加随机的无法标识的元数据。

注解中的元数据可大可小,可以是结构化的也可以是非结构化的,并且能包含标签不允许使用的字符。像工具和软件库这样的客户端可以检索这些元数据。

Manifest清单

JSON 或 YAML 格式的 Kubernetes API 对象规范。

A manifest specifies the desired state of an object that Kubernetes will maintain when you apply the manifest. Each configuration file can contain multiple manifests.

Node节点

Kubernetes 中的工作机器称作节点。

工作机器可以是虚拟机也可以是物理机,取决于集群的配置。 其上部署了运行 Pods 所必需的服务, 并由主控组件来管理。 节点上的服务包括 Docker、kubelet 和 kube-proxy。

Resource Quotas资源配额

资源配额提供了限制每个 命名空间 的资源消耗总和的约束。

限制了命名空间中每种对象可以创建的数量,也限制了项目中可被资源对象利用的计算资源总数。

Selector选择算符

选择算符允许用户通过标签对一组资源对象进行筛选过滤。

在查询资源列表时,选择算符可以通过 标签 对资源进行过滤筛选。

Image镜像

镜像是保存的容器实例,它打包了应用运行所需的一组软件。

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

Cluster集群

集群由一组被称作节点的机器组成。这些节点上运行 Kubernetes 所管理的容器化应用。集群具有至少一个工作节点和至少一个主节点。

工作节点托管作为应用程序组件的 Pod 。主节点管理集群中的工作节点和 Pod 。多个主节点用于为集群提供故障转移和高可用性。

Static Pod 静态 Pod

由特定节点上的 kubelet 守护进程直接管理的 pod

API 服务器不了解它的存在。

Device Plugin驱动插件

设备插件是在 Kubernetes 中运行的容器,可用于访问供应商特定资源。

驱动插件 是运行在 Kubernetes 中的容器,它提供对供应商特定资源的访问。驱动插件将这些资源发布到 Kubelet。并且可以手动部署或做为 DaemonSet,而不用编写定制的 Kubernetes 代码。

 

 

 

 

 

 

 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐