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)
  • 负载均衡
Logo

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

更多推荐