kubernetes架构与组件
Borg架构
在了解k8s架构之前,不得不提到Borg架构。brog是google内部的大规模集群管理架构。负责内部核心服务的调度与管理。
架构图:
组件功能介绍:
- BorgMaster是整个集群的大脑,负责维护整个集群的状态,并将数据持久化到Paxos存储中。
- Scheduer负责任务的调度,根据应用的特点将其调度到具体的机器上去。
- Borglet负责真正运行任务(在容器中)。
- borgcfg是Borg的命令行工具,用于跟Borg系统交互,一般通过一个配置文件来提交任务。
kubernetes架构
同出于google,k8s的架构借鉴了brog的设计理念。
架构图:
k8s核心组件
etcd
etcd作为存储中间件,它是一个高可用的键值存储系统,使用Raft一致性算法处理日志复印以保证强一致性。etcd保存了整个集群的状态,k8s中的重要数据都是持久化在etcd中。
API server
API server 提供了资源操作的唯一入口,提供认证、授权、访问控制、API注册和发现等机制,其封装了核心对象的增删改查操作,以rest api接口方式提供给外部客户和内部客户组件调用,它维护的rest对象也会在etcd中持化保存。
Scheduler
scheduler负责集群的资源调度,为新建的Pod分配宿主机。
Controller manager
负责执行各种控制器,目前已经实现了多种控制器来保证k8s的正常运行。(负责维护集群的状态,比如故障检测、自动扩展、滚动更新等)
kubelet
kubelet负责维护容器的生命周期,同时也负责管理Volume和网络。它会从k8s API server接受到Pod的创建、启动、停止等请求,同时监控容器运行状态并汇报给API server。
Proxy
负责为Pod创建代理服务,proxy会从API server获取所有的service,并创建代理服务,实现service到Pod的请求路由和转发,实现虚拟网络转发。
docker
k8s node是容器运行节点,需要运行docker服务。当然,目前k8s也支持rocket。
Add-on组件
dns
dns可以给集群提供dns服务。
ingress controller
为服务提供外网入口。
heapster
资源监控服务。
dashboard
提供集群管理的GUI。
Federation
提供跨可用区的集群。
Fluentd-elasticsearch
提供集群日志采集、存储与查询。
master架构图:
node架构图:
附录:
k8s控制器
控制器(省了Controller) | 备注 |
---|---|
Replication | 管理维护Replication Controller,关联Replication Controller与Pod,保证Pod实际运行数量与Replication Controller定义数量相匹配 |
Node | 管理维护Node,定期检测node的状态,标识失效node |
Namespace | 管理维护Namespace,定期清理无效namespace,包括无效namespace下的api对象 |
Service | 管理维护Service,为loadbalancer类型的service常见管理负载均衡器 |
Endpoints | 管理维护Endpoints,关联Pod与service,创建endpoints作为Service的后端,当Pod发生变化时,实时的刷新Endpoints |
service account | 管理维护service account,为每一个namespace创建service account,并为service account常见service account secret |
persistent volume | 管理维护persistent volume与persistent volume claim,为新的persistent volume claim 分配persistent volume,为释放的persistent volume清理回收 |
Daemon set | 管理维护Daemon set,负责创建Daemon Pod,保证指定的node上正常运行Daemon Pod |
Deployment | 管理维护Deployment,关联Deployment和replication controller,deployment更新时,实现replication controller和pod的更新 |
job | 管理维护job,为job创建一次性Pod,保证完成job指定任务 |
Pod Autoscaler | 实现Pod的自动伸缩,实时获取监控数据,进行策略匹配,满足条件时执行Pod伸缩 |
参考链接:
kubernetes中文社区
参考书籍: kubernetes实战