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

92 阅读2分钟

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

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

Kubernetes 简介

为什么需要Kubernetes?

  • 容器相比于传统的虚拟化技术,更轻量,更敏捷,更易于管理,运维成本更低;

    • 一次打包,任意地方运行
  • 如果容器规模巨大,如何编排管理容器也是个巨大的挑战,需要一个强大的管理系统,Kubernetes 在这方面表现很好

特点:便携,可扩展,开源

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

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

K8S是什么?

之前学过Docker容器技术,而 k8s 是用来做 Docker 等容器平台的协调器

K8s定义

  • 便携可扩展开源的容器管理平台

K8S核心概念

image.png

K8S核心概念-Pod

image.png

K8S核心概念-Deployment

image.png

K8S核心概念-StatefulSet

image.png

K8S核心概念-Node

image.png

k8S架构

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 出入流量

Kubernetes 资源管理

K8S资源种类

image.png

  • 计算类

    • 原生: CPU,memory,等;
    • 可通过 Device plugin 方式支持的非原生: numa,socket。。。
  • 存储类

    • 原生:

      • 临时存储: Ephemeral storage,EmptyDir 等
      • 持久化 (PV): Cinder, RBD, Cephfs, NFS, GlusterFS...
    • 可以通过 CSI 方式扩展支持其他存储;

资源上报、资源分配、状态维护、资源回收

Kubernetes 调度

资源申请

调度流程

image.png

实践案例分析

MySql + WordPress