k8s的架构
其中:
- etcd:保存了整个集群的配置信息和各种资源的状态信息
- kube-apiserver:提供了资源操作的唯一入口,并提供了认证、授权、访问控制、API注册和发现等机制
- kube-scheduler:负责资源的调度,按照预定的调度策略将pod调度到相应的机器上
- kube-controller-manager:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
- kubelet:负责维持容器的生命周期,同时也负责volume(CVI)和网络(CNI)的管理
- container runtime:负责镜像管理以及pod和容器的真正运行(CRI),默认的容器运行时为docker
- kube-proxy:负责为service提供cluster内部的服务发现和负载均衡。
除了核心组件以外,还有一些add-ons(附件)
- kube-dns:为整个集群提供DNS服务
- ingress controller:为服务提供外网入口
- heapster:提供资源监控
- dashboard:提供GUI
- fluentd-elasticsearch:负责日志采集、存储和查询
分层架构
- 核心层:对外提供API构建高层的应用,对内提供插件式应用执行环境
- 应用层:部署(无状态应用、有状态应用、批处理任务、集群应用等)和路由(服务发现、DNS解析)
- 管理层:系统度量、自动化以及策略管理
- 接口层:kubectl命令行工具、客户端SDK以及集群联邦
- 生态系统:在接口层之上的庞大容器集群管理调度的生态系统。