(二)Kubernetes组件说明
一、基于Borg的组件架构
二、K8S架构
注意:高可用集群副本数量最好是 >= 3的奇数个
1、调度器scheduler:将任务分配致不同的node节点,也就是负责接受任务,并选择合适的节点进行分配任务。整个过程是:scheduler将任务交给api server,api server 负责把任务写进etcd,scheduler不会与我们的etcd交互。
2、控制器replication controller:维护我们副本的数量(期望值)
3、api server:所有服务访问的入口
4、kubectl:命令行管理工具
5、etcd
相当于Borg里面的Paxos,就是键值对数据库,用于kubernetes的持久化,存储K8S集群的所有重要信息。
官方将它定义为一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。
推荐在Kubernetes集群中使用Etcd v3,v2版本在Kubernetesv1.11中弃用。
etcd的内部架构图如下:
说明:
① Raft:所有的读写信息都会存在里面
②WAL:运行日志
③Store:持久化磁盘
6、kubelet
直接跟容器引擎交互,实现容器的生命周期管理。例如:它会与我们的docker交互,操作docker创建容器等。
7、kube proxy
负责写入规则至IPTABLES、IPVS实现服务映射的访问。
例如:控制Pod与Pod之间的访问,他的默认操作对象是操作防火墙(firewall)
8、其他插件说明:
① CoreDNS:可以为集群中的SVC创建一个域名IP的对应关系解析
② Dashboard:给K8S集群提供一个B/S结构访问体系
③ INGRESS CONTROLLER:官方只能实现四层代理,INGRESS 可以实现七层代理。
④FEDETATION:提供一个可以跨集群中心多K8S统一管理功能
⑤PROMETHEUS:提供一个K8S集群的监控能力
⑥ELK:提供K8S集群日志统一分析介入平台