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

185 阅读3分钟

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

深入理解K8S资源管理和调度.png

  • 部署WordPress应用:怎样安装docker

  • 容器的定义 容器必须要有一个基础设施物理机,只有一个操作系统。

  • Kubernetes简介

    • 为什么要用kubernetes?因为kubernetes依赖于宿主机去生存,方便管理。应用数量巨大,脚本之间很难管理。kubernetes能够解决这些问题
    • 如何进行编排操作系统

    -Kubernetes 的特点:便携,可拓展,开源

    目的:管理容器应用和服务

    作用:声明式配置和自动化

如何在kubernetes里面部署wordpress应用?

  • pod
    
  • deployment/StatefulSet
    
  • Volume(写死在pod里,没有办法进行一些自动化的管理/PVC(进行封装,持久化存储的声明)/PV(映射到一个主机的空间,由管理员和kubernetes自动创建)/StorageClass(一个类的存储,没有的话需要管理员)
    
  • Node(携带机器资源)
    

截屏2022-08-18 上午12.58.44.png

pod是最小单位,作为容器应用,完全同质,需要用户去创建还有PVC,storage class动态创建一个pv,代表了一个存储介质和存储空间。deployment是一组pod的抽象。

  • kubernetes的设计准则 线下兼容

    代码开源

    控制闭环

    简单到复杂简单借口方便使用

    模块化:组件,接口,插件

kubernetes管理调度原则
Kubernetes 的调度器在为 pod 选择运行节点的时候,只会考虑到调度那个时间点集群的状态,经过一系列的算法选择一个当时最合适的节点。但是集群的状态是不断变化的,用户创建的 pod 也是动态的,随着时间变化,原来调度到某个节点上的 pod 现在看来可能有更好的节点可以选择。比如考虑到下面这些情况:

  • 调度 pod 的条件已经不再满足,比如节点的 taints 和 labels 发生了变化
  • 新节点加入了集群。如果默认配置了把 pod 打散,那么应该有一些 pod 最好运行在新节点上
  • 节点的使用率不均匀。调度后,有些节点的分配率和使用率比较高,另外一些比较低
  • 节点上有资源碎片。有些节点调度之后还剩余部分资源,但是又低于任何 pod 的请求资源;或者 memory 资源已经用完,但是 CPU 还有挺多没有使用。

截屏2022-08-18 上午1.04.50.png

K8S控制架构 ERCD:持久化数据中心,维护集群中所有数据的有序性和一致性,时间机制同步数据变更

APIserver:所有组件收敛的入口,对所有组件提供API接口,负责admission,鉴权能力等功能,提供后端ETCD数据Cacher降低ETCD压力,结合ETCD,提供List-Watch机制

Controller-Manager:提供一系列控制器,负责维护各种对象的生命周期,比如:Node controller,PV controller,deployment controller

Scheduler:负责应用实例的调度,把Pod绑定到合适的Node。
Kubelet:基于Pod声明,真正开始启动容器,负责容器生命周期维护
Kube-proxy: 网络代理,负责维护节点网络规则,接管Pod出入流量。

Kubernetes 核心通信机制-List-Watch

  • 资源分配:存储卷---Pod/PVC --mounter/volume manager(kubelet) --- PV controller Provisionner/Attach controller(controller manager)

-Kubenetes 的局限性
非原生资源的精细化管理能力
动态资源介入,管理能力
调度功能和性能
调度质量

个人思考与总结
本节课深入学习了Kubernetes资源管理及调度的理论知识,了解了Kubernetes的基础架构,对企业的大数据中心基础架构有了更深入的了解,深入了解了大数据建设中心的集群架构。可以看到Kubernetes资源调度没有完美的方法,资源管理调度,应用优先级,监控等跟很多因素相关,只有根据各种可能的问题提出一些针对性的解决方案,因为集群资源的使用不是静态的,而是随着时间不断变化的。