为环境配置集群计算资源可以解决一下两个场景的问题:
1)指定某个应用下环境对应的集群;
2)指定某个应用下环境使用集群中的某些节点(ECS);
目前已经支持创建多个集群。方式和创建第一个集群相同。
在“运维中心”-> “资源分配策略”中新建策略或者在列表中直接找到自己的应用。
依次选择应用、环境、关联集群即可。
注:已经有运行资源(容器、服务、网络)的环境,需要先删除对应的资源后才能变更关联集群。
在“运维中心”-> “集群列表”-> 选择对应集群 -> “管理”-> “节点列表”给指定的ECS绑定标签。
1)已有集群的所有标签可以在下方选择标签的键值。
2)新建标签请直接在上面输入框输入,并点击添加。如上图所示,以“:”分割key/value。
点击确定后,绑定成功。
注:这里绑定的标签,如果通过Yaml类型部署配置使用,请在Yaml部署配置的标签键前添加字符串`label.jst.com/`。比如绑定的标签是"type:nodejs",那实际使用Yaml配置节点标签选择器时,请使用"label.jst.com/type:nodejs"。通过一般配置使用,不需要关注这个问题。
分为两种方式(二者选一种即可):1)为已创建好的环境创建“资源分配策略”; 2)创建环境时直接绑定ECS资源标签。
注:如果环境关联了Yaml类型的配置,暂时无法通过产品化的方式指定节点部署,请直接通过K8S原生Yaml配置的方式解决。
在“运维中心”-> “资源分配策略”中新建或变更现有策略。
在关联资源标签中添加想关联的标签即可。
在创建环境的第二步,选择好集群后,选择“关联ECS资源标签”即可。此处“关联ECS资源标签”的下拉内容,需要在上方选择的集群中,按照场景2,步骤1的说明,给Node节点先绑定好标签。
在创建环境过程中选择了关联ECS资源标签,会自动为该环境关联到指定的节点上,即创建出一条资源分配策略,效果同步骤2的第一种方式。
执行策略目前有两种:尽力交付 & 强制交付。
① 尽力交付:表示在调度时尽量将容器调度到关联标签对应的节点上,如果没有节点满足要求,会挑选其他不满足条件的节点部署。
② 强制交付:强制将容器调度到关联标签对应的节点上,如果没有节点满足要求,会因没有资源而部署失败。
相同Key值的标签之间是或关系,不同Key值的标签是与关系。
开启之后,容器将会尽力分配到不同的node节点上。如果没有多余节点满足要求,仍然后退化到在相同的节点上部署应用。
注:“容器尽力分配到不同宿主机的优先级” 大于 “尽力交付指定Node节点标签的优先级”。也就是如果两个条件产生冲突,会优先保证容器尽力分配到不同宿主机。
参考节点污点使用文档:点击查看。
注:如果使用YAML部署配置,请使用原生的PodSpec -> Tolerations配置。并且在污点的key值前添加前缀`taint.jst.com/`。
在环境分配策略中,配置污点容忍度。
利用节点污点的特性,包含污点的节点不会被集群调度容器。给应用环境配置容忍度之后,集群在调度时会“容忍”指定的污点,允许将该应用环境调度到包含污点的节点上去。
场景2 + 场景3 配合,可以实现将应用环境的容器与节点一一对应起来,保证应用环境只会调度到指定的节点上,同时保证节点只会接受指定环境的容器。