一、Kubernetes架构图
可以看到Kubernetes是由Master节点与Node节点组成,在Master节点当中包含etcd高可用数据库、API Server、Scheduler以及Controller Manager,在Node节点上一般包含运行着守护进程Kubelet以及Docker,我们在Kubernetes上创建的应用其实都是在Node节点上面运行的,Master节点是调度节点,主要是帮助我们进行调度的
二、Kubernetes组件组成
1、Master节点
etcd
etcd存放的就是集群的状态,一般把所有的集群信息都存放到etcd当中,etcd不属于Kubernetes的某一个部分,而是单独集群部署的,API Server是它唯一的入口,可以直接访问etcd。
API Server
API Server提供了操作资源的唯一入口,例如认证、授权、访问控制、注册或者发现,都是通过API Server来完成的。
Controller Manager
Controller Manager是一个控制器,负责维护集群的状态,例如Pod的故障检测、Pod的自动扩展、滚动更新等都是它来完成的
Scheduler
Scheduler调度控制器负责整个集群的资源调度,按照默认或者指定的调度策略将Pod调度到符合要求的Node节点上运行
2、Node节点
Kubelet
Kubelet维护整个容器的生命周期,API Server创建Pod,Scheduler将Pod调度到符合要求的Node节点上,该节点上的Kubelet就会去运行Pod以及Docker,Pod的存储以及网络都是Kubelet进行管理的
Docker
Docker负责镜像的管理,例如镜像的拉取、启动容器等
Kube-proxy
Kube-proxy主要是提供整个集群内部Service的负载均衡和服务发现
3、组件之间的通信
API Server是etcd访问的唯一入口,只有API Server才能访问和操作etcd集群;API Server对内和对外都提供了统一的REST API,其他组件都是通过API Server进行通信的
用户使用kubectl命令来请求API Server接口完成相应操作
Kubernetes内部组件都是通过一种watch机制去监控API Server中的资源变化,然后对其做一些相应的操作