k8s核心组件
master中的核心组件
- api-server(接口服务,基于rest风格开放k8s接口的服务)
- kube-controller-manager(管理各个类型的控制器,针对k8s中的各种资源进行管理)
- cloud-controller-manager(云控制管理器,第三方云平台提供的控制器,api对接管理功能)
- kube-scheduler(调度器,负责将pod基于一定的算法,将其调用到更合适的节点(服务器)上)
- etcd(理解为k8s的数据库,键值类型的分布式数据库,提供了基于raft算法实现自助的集群高可用[老版本:基于内存 新版本:持久化存储])
ps:官方对于整个存储的地方称之为面板,控制面板
node中的核心组件
- kubelet(负责pod的生命周期,存储,网络)
- kube-proxy(网络代理(内部网络),负责service的服务发现 负载均衡[4层负载])
- container-runtime(容器运行时环境:docker,containerd,cri-o[一般会在三者中选择一个])
附加组件
- kube-dns(负责为整个集群提供dns服务)
- ingress controller(为服务提供外网入口)
- prometheus(监控)
- dashboard(ui界面)
- federation(提供跨可用区的集群)
- fluentd-elasticsearch(提供集群日志采集,存储和查询)
分层架构
- 生态系统(最顶层)
基于k8s的生态系统所创建出来的应用 - 接口层(所有的应用都需要调用k8s的接口)
- 管理层(管理层,系统度量(基础设施,容器和网络的度量),自动化(如自动扩展,动态provision等)以及策略管理(RBAC,Quota,psp,networkpolicy等))
- 应用层(部署(五状态应用,有状态应用,批处理任务,集群应用等)和路由(服务发现,dns解析))
- 核心层(kubernetes最核心的功能,对外提供api构建高层的应用,对内提供插件式应用执行环境)
- 插件(整个架构从上往下,最后调用不同的插件)