kubernetes的部署架构
组件架构图

如图所示kubernetes分为master和node端,以及一个外接的cloud端。
- master 控制平面,control plan,包括 kube-apiserver, kube-scheduler, kube-controller-manager, etcd.
- kube-apiserver
 
 
将kubernetes 控制平面api暴露出来的api服务。用于接收用户端的请求,是控制平面的前端,是一个无状态的服务,可以启动多个实例用于分流请求流量。
- 
- kube-scheduler
 
 
用于watch apiserver的资源变动(增删改查),并调度至合适的node节点,从而来创建pod资源。通过一系列的filtering(过滤),scoring(打分)选取合适的node节点,调度pod运行。
- 
- kube-controller-manager
 
 
每个控制器都是独立的二进制进程,包括node controller, replication controller, endpoints controller, service account & token controllers。通过空置循环将期望状态和运行状态保持一致。
- 
- etcd
 
 
高可用,KV结构的kubernetes后端数据存储组件。
- 
- cloud-controller-manager
 
 
与云厂商服务能力对接组件 又称为kubernetes cloudprovider
- node节点 又称为数据平面 data plan 包括 kubelet, kube-proxy, container runtime
- kubelet
 
 
运行在集群每个节点的客户端,确保相关容器运行在pod中,通过pod specs标签描述容器的运行状态。
- 
- kube-proxy
 
 
运行在集群每个节点的网络代理组件,确保kubernetes服务链接和转发的组件。
- 
- container runtime
 
 
支持运行容器底层环境的软件。支持docker containerd cri-io rktlet等
- cloud端
 
作为集群外部的附加能力,通过与cloud-controller-manager组件对接,扩展kubernetes集群于云上动态扩展的特性。
- addons 附加组件
 
使用kubernetes resources增加集群功能,如DNS, Web UI(dashboard),container resources monitoring,cluster-level logging
- 
- dns coredns
 - cni (flannel, calico)网络插件接口
 - Web UI(dashboard)可视化平台
 - container resources monitoring 容器资源监控
 - cluster-level logging 负责保存,搜索,查看容器日志
 
 
工作流程
- master
 
用户通过(API, Web UI, CLI)向APIserver 发送请求,kube-schedule 监听apiserver资源变动,同时从node节点选取最合适的node节点开始调度,并把调度结果保存到etcd集群中去。
- node
 
kubelet也会监听apiserver的资源变动,并在复合的node上通过kubelet调用相关docker引擎进行后续打包和构建操作。
                    
                
                
            
        
浙公网安备 33010602011771号