kubernetes-handbook/architecture/index.md

76 lines
3.9 KiB
Markdown
Raw Normal View History

2017-05-14 19:08:56 +08:00
---
title: "Kubernetes架构"
layout: "post"
---
# Kubernetes架构
Kubernetes最初源于谷歌内部的Borg提供了面向应用的容器集群部署和管理系统。Kubernetes
## Borg简介
Borg是谷歌内部的大规模集群管理系统负责对谷歌内部很多核心服务的调度和管理。Borg的目的是让用户能够不必操心资源管理的问题让他们专注于自己的核心业务并且做到跨多个数据中心的资源利用率最大化。
Borg主要由BorgMaster、Borglet、borgcfg和Scheduler组成如下图所示
![borg](media/borg.png)
* BorgMaster是整个集群的大脑负责维护整个集群的状态并将数据持久化到Paxos存储中
* Scheduer负责任务的调度根据应用的特点将其调度到具体的机器上去
* Borglet负责真正运行任务在容器中
* borgcfg是Borg的命令行工具用于跟Borg系统交互一般通过一个配置文件来提交任务。
## Kubernetes架构
Kubernetes借鉴了Borg的设计理念比如Pod、Service、Labels和单Pod单IP等。Kubernetes的整体架构跟Borg非常像如下图所示
![architecture](media/architecture.png)
Kubernetes主要由以下几个核心组件组成
- etcd保存了整个集群的状态
- apiserver提供了资源操作的唯一入口并提供认证、授权、访问控制、API注册和发现等机制
- controller manager负责维护集群的状态比如故障检测、自动扩展、滚动更新等
- scheduler负责资源的调度按照预定的调度策略将Pod调度到相应的机器上
- kubelet负责维护容器的生命周期同时也负责VolumeCVI和网络CNI的管理
- Container runtime负责镜像管理以及Pod和容器的真正运行CRI
- kube-proxy负责为Service提供cluster内部的服务发现和负载均衡
除了核心组件还有一些推荐的Add-ons
- kube-dns负责为整个集群提供DNS服务
- Ingress Controller为服务提供外网入口
- Heapster提供资源监控
- Dashboard提供GUI
- Federation提供跨可用区的集群
![](/images/14791969222306.png)
![](/images/14791969311297.png)
### 分层架构
Kubernetes设计理念和功能其实就是一个类似Linux的分层架构如下图所示
![](/images/14937095836427.jpg)
* 核心层Kubernetes最核心的功能对外提供API构建高层的应用最内提供插件式应用执行环境
* 应用层部署无状态应用、有状态应用、批处理任务、集群应用等和路由服务发现、DNS解析等
* 管理层系统度量如基础设施、容器和网络的度量自动化如自动扩展、动态Provision等以及策略管理RBAC、Quota、PSP、NetworkPolicy等
* 接口层kubectl命令行工具、客户端SDK以及集群联邦
* 生态系统:在接口层之上的庞大容器集群管理调度的生态系统,可以划分为两个范畴
* Kubernetes外部日志、监控、配置管理、CI、CD、Workflow、FaaS、OTS应用、ChatOps等
* Kubernetes内部CRI、CNI、CVI、镜像仓库、Cloud Provider、集群自身的配置和管理等
> 关于分层架构可以关注下Kubernetes社区正在推进的[Kbernetes architectual roadmap](https://docs.google.com/document/d/1XkjVm4bOeiVkj-Xt1LgoGiqWsBfNozJ51dyI-ljzt1o)和[slide](https://docs.google.com/presentation/d/1GpELyzXOGEPY0Y1ft26yMNV19ROKt8eMN67vDSSHglk/edit)。
## 参考文档
- [Kubernetes design and architecture](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture.md)
- <http://queue.acm.org/detail.cfm?id=2898444>
- <http://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/43438.pdf>
- <http://thenewstack.io/kubernetes-an-overview>
- [Kbernetes architectual roadmap](https://docs.google.com/document/d/1XkjVm4bOeiVkj-Xt1LgoGiqWsBfNozJ51dyI-ljzt1o)和[slide](https://docs.google.com/presentation/d/1GpELyzXOGEPY0Y1ft26yMNV19ROKt8eMN67vDSSHglk/edit)