技术编程|图解 K8s 核心概念和术语


我第一次接触容器编排调度工具是 Docker 自家的 Docker Swarm , 主要解决当时公司内部业务项目部署繁琐的问题 , 我记得当时项目实现容器化之后 , 花在项目部署运维的时间大大减少了 , 当时觉得这玩意还挺新鲜的 , 原来自动化运维可以这么玩 。 后面由于工作原因 , 很久没碰过容器方面的知识了 。 最近在公司的数据同步项目中 , 需要使用到分布式调度数据同步执行单元 , 目前使用的方案是将数据同步执行单元打包成镜像 , 使用 K8s 进行调度 , 正好趁这个机会了解一下 K8s , 下面我就用图解的形式将我所理解的 K8s 分享给大家 。 K8s 三大核心功能
K8s 是一个轻便的和可扩展的开源平台 , 用于管理容器化应用和服务 。 通过 K8s 能够进行应用的自动化部署和扩缩容 。
K8s 是比容器更上一层的架构 , 它可以支持多种容器技术 , 比如我们熟悉的 Docker , K8s 定位是一个容器调度工具 , 它主要具备以下三大核心能力:
1、自动调度
k8s 将用户部署提交的容器放到 k8s 集群的任意一个节点中 , k8s 可以根据容器所需要的资源大小 , 以及节点的负载情况来决定容器放在哪个节点上面 。

技术编程|图解 K8s 核心概念和术语
本文插图

2、自动修复
当 k8s 的健康检查机制发现某个节点出现问题 , 它会自动将该节点上的资源转移到其它节点上面完成自动恢复 。

技术编程|图解 K8s 核心概念和术语
本文插图

3、横向自动扩缩容
在 k8s 1.1+ 版本中 , 有一个功能叫 “ Horizontal Pod Autoscaler” , 简称 “HPA” , 意思是 Pod自动扩容 , 它可以预先定义 Pod 的负载指标 , 当达到预期设定的负载指标后 , 就会根据指标自动触发自动动态扩容/缩容行为 。
1)横向自动扩容

技术编程|图解 K8s 核心概念和术语
本文插图

2)横向自动缩容

技术编程|图解 K8s 核心概念和术语
本文插图

节点
从上面的图可以看出来 , k8s 集群的节点有两个角色 , 分别为 Master 节点和 Node 节点 , 整个 K8s 集群Master 和 Node 节点关系如下图所示:

技术编程|图解 K8s 核心概念和术语
本文插图

1、Master 节点
Master 节点也称为控制节点 , 每个 k8s 集群都有一个 Master 节点负责整个集群的管理控制 , 我们上面介绍的 k8s 三大能力都是经过 Master 节点发起的 , Master 节点包含了以下几个组件:
【技术编程|图解 K8s 核心概念和术语】
技术编程|图解 K8s 核心概念和术语
本文插图

API Server:提供了 HTTP Rest 接口的服务进程 , 所有资源对象的增、删、改、查等操作的唯一入口;
Controller Manager:k8s 集群所有资源对象的自动化控制中心;
Scheduler:k8s 集群所有资源对象自动化调度控制中心;
ETCD:k8s 集群注册服务发现中心 , 可以保存 k8s 集群中所有资源对象的数据 。
2、Node
Node 节点的作用是承接 Master 分配的工作负载 , 它主要有以下几个关键组件:

技术编程|图解 K8s 核心概念和术语
本文插图

kubelet:负责 Pod 对应容器的创建、启停等操作 , 与 Master 节点紧密协作;
kube-porxy:实现 k8s 集群通信与负载均衡的组件 。


推荐阅读