Kubernetes核心组件
Master组件
- API Service
API Service是k8s控制平面的前端,支持不同类型应用的生命周期编排;是集群的网关接口通过http/https协议将RESTful API提供给用户相应请求,并将结果状态存入etcd - 集群状态存储器(etcd)
K8s集群的所有状态信息存入持久化存储系统etcd中;etcd还为其存储的数据提供监听机制,用于监控和推送变更 - 控制器管理器(kube-controller-manager)
控制器负责实现用户通过API Service提交的终态声明,它通过一系列操作步骤驱动API对象的当前状态逼近或等同于期望状态 - 调度器(kube-scheduler)
K8s系统上的调度是指为API Service接受到的每一个pod创建请求,并在集群上为其分配出一个最佳工作节点
Node组件
- Kubelet
Kubelet是k8s中最重要的组件之一,是运行予每个Node之上的节点代理服务,负责接收并执行master发来的指令,以管理当前Node上pod对象的容器等任务 - 容器运行时(runtime)
Pod是一组容器组成的集合并包含这些容器的管理机制,它并为额外定义进程的边界或其他更多抽象,因此正在负责运行容器的依然是底层的运行时 - Kube-proxy
Kube-proxy会把API Service上的Service资源对象转换为当前节点上的IP tables或者ipvs的规则,这些规则能够将那些发送往该service对象ChusterIP的流量分发至它的后端pod端点之上
其他核心组件
- CoreDNS
K8s定制dns应用程序,实现名称解析和服务发现等功能实现 - Dashboard
基于web的用户接口,用于可视化k8s集群 - Kubectl
通过API Service操作k8s各种资源对象
kubernetes pod调度流程
1、用户创建pod,请求给apiseerver,apiserver将pod属性信息(metadata)写入etcd。
2、.apiserver触发watch机制准备创建pod,信息转发给调度器,调度器使用调度算法选择node,调度器将node信息给apiserver,apiserver 将绑定的node信息写入etcd。
3、apiserver又通过watch机制,调用kubelet,指定pod信息,触发runtime(运行时)创建容器。
4、创建完成之后反馈给kubelet,kubelet又将pod的状态信息给apiserver,apiserver又将pod的状态信息写入etcd。
5、其中kubectl get pods命令调用的时etcd_的信息。