这是我参与「第四届青训营」笔记创作活动的第4天,笔记的内容是有关青训营课程中的一个分享.
前言
这一次的分享是有关资源管理和调度的内容,我将从以下两个方面来进行分享。
- Kubernetes简介
- 资源管理
一、Kubernetes简介
- 定义
kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。
- 核心功能
- 自我修复
- 服务发现和负载均衡
- 自动部署和回滚
- 弹性伸缩
- 核心概念
- Pod
- Vilume/PV/PVC/StorageClass
- Deployment
- StatefulSet
- Node
Replication Controller是Kubernetes的核心概念,应用托管在Kubernetes之后,Kubernetes需要保证应用能够持续运行,这是Replication Controller的工作内容,它会确保任何时间Kubernetes中都有指定数量的Pod在运行。
- 架构
Kubernetes有以下组件
- 控制平面组件
- Node组件
二、资源管理
1、资源种类
- CPU,Memory,HugePages,GPU
- Socket,Numa,NIC
- Ephemeral Storage,NFS,GlusterFS,RBD,Cinder
- ByetDance Storgae
2、资源上报
上报是有两部分内容的,一部分是节点的健康信息,也就是这个节点是不是还可以使用,第二个就是节点的资源使用情况。
- 节点基础信息,包括IP地址、操作系统、内核、运行时、kubelet、kube、proxy版本信息。
- 节点资源信息包括CPU、内存、HugePage、临时存储、GPU等注册设备,以及这些资源中可以分配给容器使用的部分。
- 调度器在为Pod选择节点时会将机器的状态信息作为依据。
3、资源分配
资源分配会遇到以下的一些问题
先从资源申请者的pod来讲:
- Pod如何才能具有弹性。弹性包括单个Pod,如果在不是很需要资源的情况下,k8s回收一些资源用于执行重要的任务。弹性还包括,如何在执行紧急任务的时候,先停一些不重要的Pod、
- 如果Pod与pod具有关联性,需要分配在相同的机器怎么办?
- 如果Pod与Pod不能部署在同一台机器上怎么办。
- 如果Pod需要部署在指定类型的机器上怎么办,比方说,一个Pod需要的所计算密集型的主机,或者需要的是IO密集型的主机,或者需要特殊的GPU。
从机器的角度来讲:
- 如果机器只允许一些Pod调度上去,怎么做。
- 如果机器故障了,不想再让新的Pod调度上来怎么做。
- 机器如何选择Pod
4、资源维护
维护的方法就是比较常规
5、资源回收
结尾
通过这次课程学习到了Kubernetes架构的用处,对于资源维护和资源回收的方法有了一部分认知,并且在自己的计算机上成功使用了这个架构。