Placement服务详解
# Placement 服务详解
Placement是OpenStack中用来进行资源管理的组件,是N版本开始从Nova组件中剥离出来的项目。之 前在Nova中是用来寻找符合条件的主机,独立出来以后,它的目标变成了寻找合适资源。例如Nova用 来开启虚拟机的主机资源,Neutron用来创建虚拟网络的资源等等。
现在它的API是用来追踪资源供应商(例如计算节点、存储池等)的清单和使用率,以及不同的资源类 别。例如可以查看计算节点上的CPU和内存使用情况,外部存储池的使用情况等。
# Placement里的核心概念
Placement服务因为从N版本才开始分离出来,因此最开始默认只提供了api接口供其他服务进行资源的 查询,没有提供对应的CLI命令,因此社区为了方便用户查询placement管理的资源信息,为它开发了 一个命令行工具osc-placement,这个命令行工具没有自己的命令,它更像是一个插件,给openstack 添加了对应的子命令resource、allocation。我们先安装配置好这个命令
osc-placement这个命令插件需要通过pip来安装,在CentOS7上,安装pip需要使用epel源,因此安装 命令步骤是:
yum install epel-release
yum install python2-pip
2
如果你的机器上已经安装配置好epel的yum源,则可以直接执行第二条命令。pip命令安装好以后,因 为默认的pip命令是8.1版本,比较老旧,一般我们要把它升级到较新的版本,支持python2的最后一个 pip版本是20.3.4,因此我们的升级命令是:
pip install --upgrade 'pip<=20.3.4'
升级完成后,使用pip命令安装osc-placement:
pip install osc-placement
可以安装的最新osc-placement版本是2.0.0,安装完成后,openstack就多了resource和allocation这样 两个子命令。但是这个版本的命令默认使用的是Placement 1.0版本的API接口,而实际使用时需要最 低1.20版本的接口,因此在使用之前,我们还需要在admin-rc文件中添加下面一行:
export OS_PLACEMENT_API_VERSION=1.20
然后重新执行source admin-rc.sh让环境变量生效,下面我们就可以通过这两个子命令来查看整个集群 内的资源基本情况。
# Placement资源分类
资源分类指的是Placement里把资源节点能够提供的资源分成了对应的类别,例如计算节点一般可以提 供CPU、内存,安装了计算显卡的节点可以提供GPU资源等,管理资源分类对应的子命令是:
openstack resource class [list|show|create|delete|set]
各个子命令的作用分别是:
- list,列出现有的所有资源类
- show,显示某个资源类的详细信息;
- create,创建一个自定义的资源类别;
- delete,删除某个资源类别;
- set,创建或者校验已有的单个资源类,和create命令不一样的是,create命令在资源类存在时会失败。而set命令不会。同时这个命令要求placement 的API版本大于1.7,即我们当前的1.10版本可以正常使用。
# Placement资源供应商
资源供应商指的就是提供资源的节点,对应的管理子命令是:
openstack resource provider [list|create|delete|set|show]
除了对资源供应商本身的管理外,基于资源供应商,还有另外几个下级概念,分别是:
- inventory,资源清单,即可以处理单个资源供应节点上提供的资源详情信息,对应的子命令有:
- list,列出单个节点上提供的所有资源类的详情信息。
- show,列出单个节点上某个资源类的详情信息。
- delete,可以删除单个节点上整个资源清单或者单个资源类,
- set,替换节点上资源清单里的资源类信息,默认是会使用新的值替换所有旧的值,因此如果只是想增加新的属性,那么必须要同时列出所有的新旧资源类属性。
- class set,修改节点上资源清单里某个资源类的属性。
- trait,特征,即将某一类具有相同的特征的节点打上某个标签,例如某几个计算节点都具有高速SSD,那么可以给它打上hspeed_ssd特征信息。对应的管理子命令有:
- list,列出某个节点上的所有特征值;
- delete, 删除某个节点上某个特征值;
- set,给节点添加某个特征值;
- usage,使用率,即某个节点上已有资源的使用情况,例如VCPU使用了多少,内存使用了多少,硬盘使用了多少等信息。
- aggregate,显示主机聚合信息,主机聚合指的是将一组具有相同特征的主机分配到同一个组里,称为聚合。
- allocation,分配信息
Placement组件通过上面命令查询出来的信息并不具备权威性,它里面的信息更多的是由其他组件提供,是在动态变化的信息,特别是对于大规模集群而言,更多的是一个参考作用。