alibaba/open-simulator

[Demo]二期实现内容:容器迁移

TheBeatles1994 opened this issue · 3 comments

二期内容:

deadline:2021年1月15号(周五)

概念定义

容器迁移:将 Pod 从原节点迁移到指定节点

碎片:如果一个节点上的剩余资源,在任一维度上,不足够再放下一个当前集群内的任何一个 Pod,那么这些剩余资源都是碎片。比如一个节点CPU申请量已经达到 95%,而内存申请量只有 40%,那么该节点存在大量的内存碎片。

演示内容

在对集群进行缩容时,下线节点前需将其上的 Pod 进行迁移。本期演示下线节点前的容器迁移。本期暂不演示碎片整理功能。

  • 根据 kube-config 模拟现有集群
  • 预演(Dry Run)
    • 从模拟集群中选择 n 个可下线节点(n可配置)
      • 筛选节点时,支持设置资源过滤名单,比如某个命名空间下的资源不做处理,某个 Label 的 Pods 不做处理等
    • 图形化显示集群缩容前后各个资源变化
  • 容器迁移(Run)
    • 根据预演结果,对集群中的 Pods 按批次迁移到指定 Node 上

节点下线需支持暴露 SDK 供外部项目使用

// NodeStatus 结构体包含了 MigrationPlan 的内容,同时多了两个变量
// isRemovable 表示该节点是否可下线
// reason 表示节点不可下线的原因
type NodeStatus struct{
  MigrationPlan
  isRemovable bool
  reason string
}

type MigrationResult struct {
  nodeStatus []NodeStatus
}
// ScaleDownCluster
// 参数
// 1. 由使用方自己生成 cluster
// 2. nodelist 为用户指定的下线节点列表
// 返回值
// 1. error 不为空表示函数执行失败
// 2. error 为空表示函数执行成功,通过 MigrationResult 信息获取集群缩容模拟信息。其中 UnscheduledPods 表示无法调度的 Pods,若其为空表示模拟调度成功;NodeStatus 会详细记录每个 Node 上的 Pod 情况。
func ScaleDownCluster(cluster ResourceTypes, nodelist []string, opts ...Option) (*MigrationResult, error) 

暂时搁置

请问这个功能有计划加入版本吗,这个项目目前已经搁置了吗

请问这个功能有计划加入版本吗,这个项目目前已经搁置了吗

暂时没有人力投入