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

138 阅读3分钟

image.png

这是我参与「第四届青训营」笔记创作活动的第4天,笔记的内容是有关青训营课程中的一个分享.

前言

这一次的分享是有关资源管理和调度的内容,我将从以下两个方面来进行分享。

  • Kubernetes简介
  • 资源管理

一、Kubernetes简介

  1. 定义

kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。

  1. 核心功能
  • 自我修复
  • 服务发现和负载均衡
  • 自动部署和回滚
  • 弹性伸缩
  1. 核心概念
  • Pod
  • Vilume/PV/PVC/StorageClass
  • Deployment
  • StatefulSet
  • Node

Replication Controller是Kubernetes的核心概念,应用托管在Kubernetes之后,Kubernetes需要保证应用能够持续运行,这是Replication Controller的工作内容,它会确保任何时间Kubernetes中都有指定数量的Pod在运行。

  1. 架构

Kubernetes有以下组件

  • 控制平面组件
  • Node组件

二、资源管理

1、资源种类

  • CPU,Memory,HugePages,GPU
  • Socket,Numa,NIC
  • Ephemeral Storage,NFS,GlusterFS,RBD,Cinder
  • ByetDance Storgae

2、资源上报

QQ图片20220822172625.png

上报是有两部分内容的,一部分是节点的健康信息,也就是这个节点是不是还可以使用,第二个就是节点的资源使用情况。

  • 节点基础信息,包括IP地址、操作系统、内核、运行时、kubelet、kube、proxy版本信息。
  • 节点资源信息包括CPU、内存、HugePage、临时存储、GPU等注册设备,以及这些资源中可以分配给容器使用的部分。
  • 调度器在为Pod选择节点时会将机器的状态信息作为依据。

3、资源分配

1.png 资源分配会遇到以下的一些问题

先从资源申请者的pod来讲:

  • Pod如何才能具有弹性。弹性包括单个Pod,如果在不是很需要资源的情况下,k8s回收一些资源用于执行重要的任务。弹性还包括,如何在执行紧急任务的时候,先停一些不重要的Pod、
  • 如果Pod与pod具有关联性,需要分配在相同的机器怎么办?
  • 如果Pod与Pod不能部署在同一台机器上怎么办。
  • 如果Pod需要部署在指定类型的机器上怎么办,比方说,一个Pod需要的所计算密集型的主机,或者需要的是IO密集型的主机,或者需要特殊的GPU。

从机器的角度来讲:

  • 如果机器只允许一些Pod调度上去,怎么做。
  • 如果机器故障了,不想再让新的Pod调度上来怎么做。
  • 机器如何选择Pod

4、资源维护

维护的方法就是比较常规

2.png

5、资源回收

3.png

结尾

通过这次课程学习到了Kubernetes架构的用处,对于资源维护和资源回收的方法有了一部分认知,并且在自己的计算机上成功使用了这个架构。