K8S 资源管理和调度 | 青训营笔记

114 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第17天

Kubernetes

Kubernetes(简称k8s)是Google开源的一个容器集群管理系统,使用Go语言开发。

  • 特点:便携,可扩展,开源
  • 目的:管理容器应用和服务
  • 作用:声明式配置和自动化

image.png

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:

image.png

k8s的核心功能:

  • 服务发现和负载均衡
  • 存储编排
  • 自动发布,回滚
  • 自愈
  • 秘钥,配置管理
  • 资源管理,应用编排调度

资源管理

资源上报

计算资源的上报路径:

image.png

资源分配

计算资源分配:

image.png

存储资源分配:

image.png

状态维护

image.png

资源回收

计算资源回收:

image.png

存储资源回收:

image.png

调度流程

image.png

image.png

优化

kubernetes的优化空间:

  • 非原生资源的精细化管理能力
  • 动态资源接入,管理能力
  • 调度功能和性能
  • 调度质量

kubernetes和YARN的一些不同:

  • 基本单位
    • kubernetes最小单位Pod
    • YARN是Container
  • 资源管理
    • YARN对资源种类的管理能力较强
    • kubernetes的扩展能力较强
  • 调度模式:
    • kubernetes使用Task寻找合适的Node
    • YARN使用Node寻找合适的Task
  • 系统设计
    • kubernetes采用中心存储,异常恢复更容易
    • YARN采用节点缓存