一.简介
Kubernetes是由谷歌开发的,使用GO语言,最初源于谷歌内部的Borg,提供了面向应用的容器集群部署和管理系统。
K8s用来管理容器,容器种类有很多,最常用的就是docker,如果不做特殊说明,k8s就是默认搭配docker工作。
参考Kubernetes中文文档:http://docs.kubernetes.org.cn/
二.架构设计图
架构核心组件整体分为左右两个部分,Master组件和Node组件。
2.1 Master
Master部分,属于主控节点,控制node部分有序的工作,主要包含如下几个部分:
- API server :k8s集群统一入口,并提供认证、授权、访问控制、API注册和发现等机制,使用restful方式;
- Scheduler :调度器,负责资源的调度,按照预定的调度策略选择node;
- Controller manager :控制器,负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;一个资源对应一个controller;
- etcd :属于存储组件,用于保存整个k8s集群的的数据;
2.2 Node
Node部分,属于工作节点,存在多个。是所有Pod运行所在的工作主机,可以是物理机也可以是虚拟机,每个node主要包含如下几个部分:
- kubelet:独立的进程,对接Master节点,听从master指挥,负责维护容器的生命周期,同时也负责Volume(CVI)和网络(CNI)的管理;
- kube-proxy:独立的进程,提供网络代理,接收网络请求,并提供服务发现和负载均衡,将网络请求路由到具体的pod;
- Pod:pod是的k8s管理的最小部署单元,内部包含多个docker容器,多个容器之间共享网络(比如一个容器监听了80端口,那么其他容器也能监听到)。
Node、Pod、docker之间的层级关系如下: