这是我参与「第四届青训营 」笔记创作活动的第17天
Kubernetes
Kubernetes(简称k8s)是Google开源的一个容器集群管理系统,使用Go语言开发。
- 特点:便携,可扩展,开源
- 目的:管理容器应用和服务
- 作用:声明式配置和自动化
k8s常见的基本概念有:
- Node:根据角色不同可以分为worker节点和master节点,Node组成了k8s
- container:容器,运行服务或程序
- Pod:k8s调度的最小单位,pod中可以包含一个或一组container
- services:最外围的单元,可以通过虚拟一个IP和Port为外部提供访问Pod资源的服务
- Replication Controllers:复制Pod,保证高可用
- Deployment:用来描述对象的一种期望的运行状态,k8s会根据deployment描述的期望状态转换为实际的执行状态
k8s的组件有很多,深入学习的话可以看专门的书,推荐《Kubernetes in action》。k8s主要的组件有:
- Controller-Manager:提供一系列控制器,负责维护各种对象的生命周期
- APIServer:对所有组件提供API接口,负责admission,鉴权等功能,提供后端etcd数据cacher,降低ETCD压力,结合ETCD,提供List-Vatch机制
- ETCD:持久化数据中心,维护集群中所有数据的有序性和一致性,事件机制同步数据变更
- Scheduler:负责应用实例的调度,把Pod绑定到合适的Node
- Kubelet:基于Pod声明,真正开始启动容器,负责容器生命周期维护
- Kube-proxy:网络代理,负责维护节点网络规则,接管Pod出入流量
k8s的核心通信机制 - List-Watch:
k8s的核心功能:
- 服务发现和负载均衡
- 存储编排
- 自动发布,回滚
- 自愈
- 秘钥,配置管理
- 资源管理,应用编排调度
资源管理
资源上报
计算资源的上报路径:
资源分配
计算资源分配:
存储资源分配:
状态维护
资源回收
计算资源回收:
存储资源回收:
调度流程
优化
kubernetes的优化空间:
- 非原生资源的精细化管理能力
- 动态资源接入,管理能力
- 调度功能和性能
- 调度质量
kubernetes和YARN的一些不同:
- 基本单位
- kubernetes最小单位Pod
- YARN是Container
- 资源管理
- YARN对资源种类的管理能力较强
- kubernetes的扩展能力较强
- 调度模式:
- kubernetes使用Task寻找合适的Node
- YARN使用Node寻找合适的Task
- 系统设计
- kubernetes采用中心存储,异常恢复更容易
- YARN采用节点缓存