K8s组件说明
Borg
高可用集群副本数据最好是大于等于3的奇数个
访问方式
- web browsers浏览器
- command-linetools命令行
- borgcfg文件读取
scheduler:调度器,所有访问会被分发到节点去运行。scheduler会把数据写入Paxos(谷歌键值对数据库)
Borglet:会实时监听Paxos,如果发现有自己的请求会去处理,达到流程目的
BorgMaster负责请求分发,可以理解为集群的大脑,防止BorgMaster单节点故障高可用集群需满足3,5,7,9的奇数
Borglet负责宫泽
K8s
etcd(开源go语言)的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转
master
- APISERVER:所有服务访问统一入口。接收到请求会去操作etcd
- Scheduler:调度器,负责介绍任务,选择合适的节点进行分配任务,把任务交给APISERVER,APISERVER负责写入etcd。
- replication
controller:控制器,维护副本数目,期望值,想让容器运行几个副本由它控制,一旦副本数不满足期望值,rc负责把副本数改写到期望值或申请到期望值,也就是申请对应的Pod或删除对应Pod。 - Scheduler与replication controller都可以在本生成缓存,并不是都要去APISERVER。
- ETCD:键值对数据库,存储k8s集群所有重要信息(持久化)如果需要恢复数据只需要还原ETCD
- v2把所有数据写入内存
- v3引入本地卷的持久化操作,关机不会造成数据损毁,会从本地磁盘恢复
ETCD数据存储
- 使用HTTP服务构建C/S,k8s也采用
- Raft:读写信息,所有信息存放地
- WAL:预写日志,为防止数据损毁,定时对日志完整备份,实时将日志写入本地磁盘Store
node节点
kubelet(docker表现形势)
- CR2:容器,运营环境,接口
- 与docker(容器引擎交互实现容器的生命周期管理)进行交互,操作docker创建对应的容器,维持Pod的生命周期
kube proxy
-
负责写入规则至IPTABLES,
-
负载均衡,操作防火墙实现Pod的映射,新版本支持IPVS实现服务映射
container(docker)
COREDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
DASHBOARD:给k8s集群提供一个B/S结构访问关系
INGRESS CONTROLLER:官方只能实现四层代理,INGRESS可以实现七层代理
FEDETATION:提供一个可以跨集群中心多k8s统一管理功能
PROMETHEUS:提供k8s集群的监控能力
ELK:提供k8s集群日志统一分析介入平台