[Demo]二期实现内容:容器迁移
TheBeatles1994 opened this issue · 3 comments
TheBeatles1994 commented
二期内容:
deadline:2021年1月15号(周五)
概念定义
容器迁移:将 Pod 从原节点迁移到指定节点
碎片:如果一个节点上的剩余资源,在任一维度上,不足够再放下一个当前集群内的任何一个 Pod,那么这些剩余资源都是碎片。比如一个节点CPU申请量已经达到 95%,而内存申请量只有 40%,那么该节点存在大量的内存碎片。
演示内容
在对集群进行缩容时,下线节点前需将其上的 Pod 进行迁移。本期演示下线节点前的容器迁移。本期暂不演示碎片整理功能。
- 根据 kube-config 模拟现有集群
- 预演(Dry Run)
- 从模拟集群中选择 n 个可下线节点(n可配置)
- 筛选节点时,支持设置资源过滤名单,比如某个命名空间下的资源不做处理,某个 Label 的 Pods 不做处理等
- 图形化显示集群缩容前后各个资源变化
- 从模拟集群中选择 n 个可下线节点(n可配置)
- 容器迁移(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)
TheBeatles1994 commented
暂时搁置
qihuang0 commented
请问这个功能有计划加入版本吗,这个项目目前已经搁置了吗
TheBeatles1994 commented
请问这个功能有计划加入版本吗,这个项目目前已经搁置了吗
暂时没有人力投入