kubernates,简称k8s,因为k和s之间有8个字母

一、发展历程

1)、目前明确了3种服务类型
1、IaaS(Infrastructure as a Service) ==========基础设施及服务 ========== 阿里云、AWS
2、PaaS(Platform as a Service) ==========平台及服务 ========== 新浪云
3、SaaS(Software as a Service) ==========软件设施及服务 ========== Office 365

2)、资源管理器
1、MESOS
一个古老的资源管理器,是Apach下的开源的分布式的资源管理的框架,后被Twitter采用,再后来Twitter宣告不用MESOS用k8s

2、Docker swarm
非常轻量级。但是他的功能相对k8s来说太少,比如我想实现一个滚动更新、回滚等操作,在swarm里是非常难得,需要手工操作,太费时

3、kubernetes
因为他的功能比较全面,非常稳定,适合企业运行,所以他已经成为当前主流的资源管理器。由Google开发,Google内部使用borg,使用go语言将Borg翻译成了k8s

特点
1、轻量级:消耗的资源少
2、开源
3、弹性伸缩
4、负载均衡:IPVS

二、组件说明

先讲Borg再讲K8S
服务的分类:
无状态服务:无论何时加入集群,都不影响正常运行
有状态服务:DBMS,退出集群后,过段时间再启动,已经不能正常工作了,已经缺失了部分数据
1)、Borg
k8s就是通过go语言去翻译Borg系统获得的产品
在这里插入图片描述

1、两部分组成
BorgMaster,Borglet
BorgMaster就是专门负责请求的分发,是整个集群的大脑。因为为了防止BorgMaster出现单节点故障,所以会发现BorgMaster有很多的副本,对于高可用集群来说,他的节点最好是>=3的奇数

2、访问方式
上图可见,bs、command、文件的读取
这三种方式在进入BorgMaster,在理解请求以后再去做分发
scheduler调度器:所有的任务到达scheduler后,scheduler会把数据写入BorgMaster的Paxos(Google的键值对的数据库),Borglet会实时地对Paxos进行监听,如果发现有自己的请求,就把取出来进行处理

1)、Kubernetes

1、scheduler、RC(replication controller)、api server组成master服务器,和BorgMaster一样,起着分发请求的作用。另一个是node节点

在这里插入图片描述
①Borg中scheduler会把数据写入Paxos数据库中;在k8s中scheduler不会直接与数据库交互,scheduler把任务交给api server,api server再把请求写入到etcd
②RC 控制器,用于维护副本的数目,比如想要某个容器运行几个副本
③api server 一切服务访问的入口,由图可见api server需要和许多组件进行交互,为了减轻api server的压力,每个组件可以在本地生成一定的缓存,并不需要每件事情都到api server 去申请
④etcd在k8s集群里就相当于BorgMaster中的Paxos键值对数据库,采用go语言编写

在这里插入图片描述
这是etcd内部的架构图,和k8s一样,也是采用的http的构建服务

  • Raft:就是读写的一些信息
  • 为了防止Raft信息损坏,WAL是一个预写日志eg:如果你想对数据库的数据进行更改,会先生存一个日志。
  • 并且定时地去给这些日志进行一个完整的备份,因为防止版本太多,进行回滚太耗时
  • Raft还会实时地将数据和日志写入到本地磁盘中进行持久化

2、Node节点
Node节点由kubelet、kube proxy、container,也就意味着在node节点需要安装三个软件,kubelet、kube proxy以及容器化引擎,这里选择主流的docker
①kubelet:kubelet会跟docker进行交互,操作docker去创建对应的容器,也就是说kubelet会维持pod的生命周期
②kube proxy就是k8s中的负载均衡,也就是说怎么去实现pod与pod之间的访问,需要借助到kube proxy

3、Pod
pod是k8s创建或部署的最小基本单位,一个pod代表了集群上正在运行的一个进程;一个pod可能有1个或多个容器

Logo

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

更多推荐