- etcd: 键值存储数据库,维护集群内各个节点状态的一致性,保存集群的状态及配置;
- apiserver:处理资源操作的请求,并提供认证、授权、访问控制、API 注册和发现等机制;
- controller manager: 控制器管理,负责维护集群的状态,如故障检测、自动扩展、滚动更新等;
- scheduler:调度器,负责资源的调度,按照预定的调度策略将 Pod 调度到相应的节点;
- kubelet:负责维护容器的生命周期, Pod 的创建、启动、监控、重启、销毁等工作,处理Master节点下发到本节点的任务;
- Container runtime: 负责镜像管理以及 Pod 和容器的真正运行(CRI);
- kube-proxy: 负责为 Service 提供 cluster 内部的服务发现和负载均衡;
- Flannel/calico:网络插件, 负责为整个集群提供 IP 服务;
- kube-dns/coredns: 负责为整个集群提供 DNS 服务;
- Ingress Controller: 为服务提供外网入口;
管理员请求master流程
用户发起一个对容器的操作请求
- API Server接受到之后会首先对用户发送的指令进行验证, 没有问题后会把指令存储到etcd.
- 同时Scheduler和Controller分别监听API Server请求验证成功后如果是新建容器,
- Scheduler会寻找最合适的Node用于运行容器,
- 而Controller通过监听获得指令之后会去完成指令的要求, 完成后会以轮询的方式校验资源(主要是容器)的状态和存储来etcd里面的指令要求的是否一致. 不一致的话进行重新部署资源(重启或者重新运行镜