Kubernetes(K8s)
一、背景
Google有十几年的容器化基础架构,内部有一套成熟的管理容器的资源管理器框架borg,但borg并不开源。后来Google使用GO语言根据borg的设计思路开发出了一套具有同功能的资源管理器框架Kubernetes,并开源了出来。
Kubernetes特点:轻量级(资源消耗小)、开源、弹性伸缩、负载均衡(使用IPVS)
二、组件说明
1、borg
架构图:
说明:
borgcfg:文件方式的请求
command-line tools:命令行方式的请求
web browsers:web页面方式的请求
BorgMaster:负责请求分发,相当于borg的大脑,BorgMaster有多个(奇数个),保证高可用
scheduler:调度器,将请求更新到键值对数据库Paxos中
Paxos:存储键值对的数据库
Borglet:borg真正工作的节点,实时监听Paxos,如果发现键值对中有请求就去执行
2、K8s
架构图:
说明:
kubectl:命令行管理工具
web UI:web页面
api server:所有服务访问统一入口,由于这个组件访问量太大,因此其它服务都有缓存机制
scheduler:调度器,和borg不同,scheduler通过api server跟数据库etcd交互。除此之外,负责接收任务,选择合适的节点进行分配任务
replication controller:控制器,维护副本数目(期望值),如控制pod数量
etcd:go语言编写的一个可信赖(自身支持集群化)的分布式(扩容方便)键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。v2版本在memory中存储,v3版本加入了磁盘做持久化存储,v2版本己在K8s v1.11 中弃用。v3版本实际使用时,将K8s集群所有重要信息做持久化存储,其他信息还是在内存中
kubelet:直接跟容器引擎交互实现容器的生命周期管理
kube proxy:负责写入规则至IPTABLES、IPVS实现服务映射访问的
3、其他插件
CoreDNS:可以为集群中的svc(service的简写)创建一个域名IP的对应关系解析
Dashboard:给K8s集群提供一个B/S 结构访问体系
lngress Controller:K8s官方只能实现四层代理,lngress可以实现七层代理
Federation:提供一个可以跨集群中心多K8S统一管理功能
Prometheus:提供K8s集群的监控能力
ELK:提供K8s集群日志统一分析接入平台