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

56 阅读2分钟

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

Kubernetes

概念

  • Pod:Kubernetes 的基本构建块。 一个 Pod 包含一组(一个或多个)容器。 通常,每个 Pod 有一个容器。
  • Depolyment:- Deployment是一个部署在Pod内的一个或多个容器映像(Docker ..etc)的组,并通过Kubernetes部署控制器监视和创建,更新或删除此类部署
  • StatefulSet:StatefulSet 是用于管理有状态应用的工作负载对象,与 ReplicaSet和Deployment这两个对象不同,StatefulSet 不仅能管理 Pod 的对象,还它能够保证这些 Pod 的顺序性和唯一性。
  • Volume:Kubernetes提供了更强大的Volume机制和插件,解决了容器数据持久化以及容器间共享数据的问题。Kubernetes存储卷的生命周期与Pod绑定
    • 容器挂掉后Kubelet再次重启容器时,Volume的数据依然还在
    • Pod删除时,Volume才会清理。数据是否丢失取决于具体的Volume类型,比如emptyDir的数据会丢失,而PV的数据则不会丢
  • PV:PV是集群中的一块存储,一般可以由集群的管理员事先供应,或者使用storage class的方式来动态供应。pv属于集群资源,它们的生命周期跟使用它们的pod时相互独立。
  • PVC:表达的是用户对存储的请求(persistant volume claim),也是kubernetes中独立存在的API资源。Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源。
  • Node:Kubernetes 通过将容器放入在节点(Node)上运行的 Pod 中来执行你的工作负载。 节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。 每个节点包含运行 Pod 所需的服务; 这些节点由 控制面 负责管理。

image.png

Kubernetes架构

image.png

  • ETCD

    • 持久化数据中心
    • 维护集群中所有数据的有序性和一致性
    • 事件机制同步数据变更
  • APIServer

    • 对所有组件提供 API 接口
    • 负责 admission,鉴权等功能
    • 提供后端 etcd 数据 cacher,降低 ETCD 压力
    • 结合 ETCD,提供 List-Watch 机制
  • Controller-manager

    • 提供一系列控制器,负责维护各种对象的生命周期 比如: Node controller, PV controller, Deployment controller, StatefulSet controller 等
  • Kubelet

    • 基于 Pod 声明,真正开始启动容器,负责容器生命周期维护
  • Kube-proxy

    • 网络代理,负责维护节点网络规则,接管 Pod 出入流量
  • 核心通信机制 - List-Watch

image.png

  • 资源上报
  • 资源分配
  • 状态维护
  • 资源回收
  • 调度流程