推荐阅读:数据库
在本文中,咱们将介绍基本的Kubernetes概念。Kubernetes的术语不少,可能会使人生畏。后端
我将帮助您创建一个思惟模型,以加快对技术的了解。服务器
首先,咱们将研究6层抽象及其组成的各个部分。而后,咱们将看看其余7个关键的 K8s API对象。并发
1)Deployment负载均衡
2)ReplicaSet框架
3)Pod分布式
4)Node Cluster高并发
5)Node Processesspa
6)Docker Container命令行
Deployment 建立和管理 ReplicaSet。
ReplicaSet 建立和管理 Pod。
Pod 运行于 Node 中,一个 Node 中一般会运行多个 Pod。
Node 中有 Container 运行时环境,并运行放置在 Docker 镜像中的应用程序。
蓝色部分是高层次的 K8s 抽象,绿色部分描述的是 Node 以及其中的 Node 子进程。
若是你想建立一直运行的无状态应用,例如 HTTP server,就须要 Deployment。
Deployment 容许您无缝升级运行中的应用。
Deployment 中指定了 Pod 死掉后重启的策略。
能够经过命令行建立 Deployment,也能够经过配置文件。
Deployment 会建立一个 ReplicaSet,ReplicaSet 会确保你的 APP 具备指定数量的 Pod。
ReplicaSet 根据 Deployment 中设定的指标来建立和扩展 Pod。
Pod 是 K8s 中的基本构建单元。
一个 Pod 中能够包含多个 Container,但一般是包含一个。
Pod 负责处理容器的数据卷、密钥、配置。
Pod 的生命周期是不肯定的,可能很是短暂,但 Pod 具备很强的再生能力,在死后能够自动从新启动。
当 ReplicaSet 对 APP 进行水平扩展的时候,就会复制 Pod,每一个 Pod 运行相同的容器代码。
Pod 生存在 Worker Node 上。
K8s 群集由 Master Node(主节点) 和 Worker Node(工做节点) 组成。
下图是集群结构描述图,一个 Worker Node 中能够运行多个 Pod,Master 负责管理这些 Worker Node。
(1) Worker Node 工做节点
Worker Node 之后简称为 Node
一个 Node 表示一台机器,能够是物理机器,也能够是虚拟机。
Node 能够理解为一个 Server 服务器。
N 个 Pod 跑在一个 Node 上。
一个 Pod 就是一个最小单元,其中的内容绝对不会被分割在2个Node上,一个 Pod 中的内容始终做为一个总体。
谁告诉 Node 作什么呢?Master。
(2) Master Node 主节点
Master 有不少种叫法,例如 Master Node, Kubernetes Master, Cluster Control Plane, Control Plane。
当看到这些名字时别晕,知道是 Master 就好。
无论叫啥,他的做用就是指挥 Worker Node。
Master 负责作调度决策、响应事件、实现变动、监控集群。
Master 和 Worker Node 中都有子进程组件。
(1) Master 组件
(2) Worker Node 组件
若是要与K8s一块儿运行,则应用程序必须放在某种容器中。
Docker是最多见的容器平台。咱们假设您正在使用它。
在建立 Deployment 时,你会指定 Pod 应该使用哪一个 Docker 镜像。
K8s 不会直接建立容器,而是建立包含容器的 Pod。
Pod 中的容器共享一切已经配置好的资源,例如数据卷存储。
这些对象负责管理和运行用于建立和运行容器的 Pod。
ReplicaSet 建立和管理 Pod。
若是一个 Pod 由于 Node 故障而关闭,ReplicaSet 会自动在其余 Node 中启动这个 Pod。
ReplicaSet 由 Deployment 建立,这样就能够经过 Deployment 很是方便的升级你的应用。
若是你的应用是有状态信息的,例如超级玛丽游戏,须要保存用户的状态:在哪一层、在哪一个位置、有多少金币 ……
StatefulSet 就是帮助咱们跟踪应用状态的。
和 ReplicaSet 同样,StatefulSet 根据规范管理一组 Pod 的部署和缩放。
StatefulSet 的 Pod 都有一个惟一的、持久的标识,控制器在进行任何从新调度时都会维护该标识。
StatefulSet 对于数据库等有状态的持久化后端服务很是有用。
Pod 中的状态信息就是保存在与 StatefulSet 关联的数据卷中。
DaemonSet 用于持续的进程,每当一个 Node 加入到集群中时,DaemonSet 都会在其中自动启动一个 Pod。
DaemonSet 适用于一直运行的后台任务,例如监控、日志收集。
StatefulSet 和 DaemonSet 虽然与 ReplicaSet 在一个层级中,但他们是不受 Deployment 控制的。
Job 负责监督管理那些运行批处理做业的 Pod。
Job 会建立 Pod,并经过跟踪 Pod 成功完成的数量来确保他们完成任务。
与 ReplicaSet 不一样,一旦容器内部的做业成功完成,容器就不会从新启动。
当你想要一次性的作一个任务的时候,可使用 Job。
若是要在指定的时间(例如每小时,天天或每个月)运行做业,请建立 CronJob。
CronJob 与 Job 相似,可是 CronJob 计划以固定的时间间隔或固定的时间重复执行。
Service 为一组 Pod 建立单个访问点。
Service 提供一致的 IP 地址和端口,以访问其中的 Pod。
外部用户和内部 Pod 都使用服务与其余 Pod 通讯。
Volume 是一个能够保存数据的目录。
Volume 是一个 Pod 的组件,在 Pod 中建立,不能单独删除。
Pod 中的容器均可以访问 Volume,只要这些容器都挂载了这 Volume 便可。
Volume 的生命周期是独立于容器的,与 Pod 相关,Pod 挂掉后 Volume 也就消亡了。
翻译整理自:
https://towardsdatascience.co...