kubernetes架构与组件

Borg架构

在了解k8s架构之前,不得不提到Borg架构。brog是google内部的大规模集群管理架构。负责内部核心服务的调度与管理。

架构图:
brog架构图

组件功能介绍:

  • BorgMaster是整个集群的大脑,负责维护整个集群的状态,并将数据持久化到Paxos存储中。
  • Scheduer负责任务的调度,根据应用的特点将其调度到具体的机器上去。
  • Borglet负责真正运行任务(在容器中)。
  • borgcfg是Borg的命令行工具,用于跟Borg系统交互,一般通过一个配置文件来提交任务。

kubernetes架构

同出于google,k8s的架构借鉴了brog的设计理念。

架构图:
k8s架构图

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架构图:
master图
node架构图:
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实战

posted @ 2021-02-25 15:52  红雨520  阅读(85)  评论(0编辑  收藏  举报