K8S 概述与特性 架构组件 和 一些核心概念
2014年, 伟大的google公司开源了Kubernates 产品, 因为这个单词K与S之间有8个字母, 所以简写就是K8S.简单来讲。
1.概述
2014年, 伟大的google公司开源了Kubernates 产品, 因为这个单词K与S之间有8个字母, 所以简写就是K8S.
简单来讲
1. K8S 是1个开源的容器化集群管理系统
讲到容器化, 大家都想到docker, 其实K8S也是基于docker的框架。
只不过如果在docker去实现集群管理,滚动更新等K8S特性的化, 配置会相当复杂。
这就是为什么K8S的存在意义
K8S 与 docker的关系有点类似于spring 与 java点关系拉~
2、K8S 利于应用程序的扩展
当然docker 加 Eureka也能实现。但是K8S 更加方便嘛
3、K8S 能让部署容器化应用更加简洁和高效
具体的化在特性上说明
2.特性
1.自动装箱
让容器能对于各种环境配置进行自动化部署, 基本要求了
2.自我修复
当容器当机时,会对容器进行自动重启。
PCF 也有这功能… docker 当然也有, 但是配置相对复杂
当所部署的Node 节点有问题时, 会对容器进行重新部署和重新调度。
意识是当某个服务service1所在的Node1 挂掉时, 会把service1 转移到node2 启动,然后继续提供服务。 叼
当容器未通过health check时,会自动关闭服务直接重新启动和health check pass , 这个有点叼
3. 方便水平扩展
双十一必备
4.服务发现和负载均衡
就是自带Eureka 和 Api-gateway的功能
5. 滚动更新
假如我们要部署service1 3个nodes, K8S 可以一个一个地部署, health check/post check pass 后才进行下一个节点不熟
6. 密钥和配置管理
这下连spring cloud config server也包含了, 还支持bus 热部署(热更新数据配置文件)
7. 存储编排
自动实现存储系统挂载及应用, 就是NAS/SAN disk管理更加方便了
8.批处理
自带scheduler…
3.K8S 集群架构组件
3.1 master 和 node
master指的是主控节点, node代表工作节点
3.2 master的组件
3.2.1 apiserver
集群统一入口, 以restful方式交给etcd存储
3.2.2 scheduler
节点调度, 选择节点应用部署
不是指batch job的那个.
3.2.3 controller-manager
处理集群中常规后台任务, 一个资源对应1个controller。
通俗点说
加入我们想加入1个server1
scheduler会选择1个节点 , 然后新建1个controller 去部署管理这个service1
3.2.4 etcd
存储系统, 用于保存集群相关的数据
3.3 node的组件
3.3.1 kubelet
master 派到 node的代表, 负责管理本节点的容器
3.3.2 kube-proxy
提供网络代理, 负责均衡的功能。
4.K8S 核心概念
4.1 POD
- POD 是K8S 容器中最小的部署单元, 而不是container。
- POD 可以理解为一组container的组合
- POD 里面的container可以共享网络(共享端口)
- POD 的生命周期是短暂的, 重部署就会重新创建
4.2 Controller
- 确保预期的POD副本数量
- 无状态和有状态的应用部署
- 一次性任务和定时任务
下面图中, 如果Node1 down了, 那么Controller 会吧POD1 和 POD2 转移到
NODE2
如果POD1 和 POD2 对存储和ip没有特定依赖, 则是无状态部署,
否则Controller 要对存储or ip做一些特别的配置, 这就是有状态部署
4.3 Service
- 定义一组POD的访问规则(API-gateway)
- 负载均衡
更多推荐
所有评论(0)