特点
- 便携性
无论公有云、私有云、混合云还是多云架构都全面支持
- 可扩展
模块化、可插拔、可挂载、可组合,支持各种形式的扩展
- 自修复
自保持应用状态、自重启、自复制、自缩放,声明式语法
组件
- etcd 保存整个集群状态,充当数据库角色,只与API Server通讯
- api server 提供资源操作的唯一入口,提供认证、授权、访问控制、API注册和发现等机制
- controller manager 负责维护集群状态,比如故障检测、自动扩容、滚动更新等
- scheduler 负责资源的调度,按照预定的策略将Pod调度到相应的机器上
- kubelet 负责维护容器生命周期,同时负责Volume和网络管理
- Container runtime 负责镜像管理以及Pod和容器运行
- kube-proxy 负责为Service提供cluster内部的服务发现和负载均衡
scheduler和controller-manager都是通过apiservier从etc中获取各种资源状态进行相应的调度和控制操作
第三方组件
- Ingress Controller 为服务提供外网人口
组件之间的关系
所有组件均通过API Server进行通信,在生产环境中master部署为多节点
etcd主要存储机器里的信息比如集群状态,集群的各Node信息等,只有API能与其通信,应部署成多节点3-5个节点
Scheduler负责整个集群的调度,通过API Server来检测Node上Pod的状态,然后根据定义的策略来调度pod并绑定Node
Controller manager 负责Pod的控制,常见的比如定义一个Pod的relicaSet,因某些原因当前pod挂掉了,这时Controller manager自动在Node重启该Pod
kubelet是Node上的组件,检测Node上的Pod,并将状态更新到API Server
kube-proxy负责代理转发,主要控制service,将service状态更新到API Server
kubectl 集群管理组件,主要调用API Server,进行整个集群管理