找回密码
 立即注册
首页 业界区 业界 Go动态感知资源变更的技术实践,你指定用过! ...

Go动态感知资源变更的技术实践,你指定用过!

羊舌正清 前天 18:30
最近在倒腾“AI大模型基础设施”, 宏观目标是做一个基于云原生的AI算力平台,目前因公司隐私暂不能公开宏观背景和技术方案, 姑且记录实践中遇到的一些技能点。
1.webp

前文已经记录了第1步: 使用arena 提交训练任务的实践。
今天我们记录聊一聊平台侧另一个核心能力:
动态纳管云原生k8s集群,并监听AI/ML训练任务的状态变化。也就是上图的第4步。
作为面向算法开发者的云原生saas平台,平台在界面上提供了纳管集群的交互入口,平台启动后会去监听pytorch,mpi训练任务的状态变更,并回显到界面(并给开发者发送飞书变更通知)。
本文核心关注:

  • 如何动态纳管k8s集群
  • 如何重建k8s informer监听
这里我提供我的实践, 请看下图:
2.webp


  • 程序启动,加载初始k8s集群,informer监听训练任务状态,并绑定informer停止信号(stopCh)、重建信号(rebuildCh)
  1. package main
  2. import "k8s.io/client-go/rest"
  3. type StartInformerFunc func(clusterId string, restConf *rest.Config) (stopCh chan struct{}, err error)
  4. type InformerManager struct {
  5.         clusterConfigs map[string]string
  6.         gvr            map[string]StartInformerFunc
  7.         stopCh         chan struct{}  // informer 需要用到
  8.         rebuildCh      chan struct{}
  9. }
  10. var InformerManagerInstance *InformerManager
  11. func NewInFormerManager() *InformerManager {
  12.         InformerManagerInstance = &InformerManager{
  13.                 clusterConfigs: map[string]string{
  14.                         "id1": "kubeconfig1",
  15.                         "id2": "kubeconfig2",
  16.                 },
  17.                 gvr: map[string]StartInformerFunc{
  18.                    "pytorchjob": startPytorchjobInformer,
  19.                    "mpijob": startMpijobInformer,
  20.                    "job": startRawjobInformer,
  21.                 },
  22.                 stopCh:    make(chan struct{}),
  23.                 rebuildCh: make(chan struct{}, 1),
  24.         }
  25.         return InformerManagerInstance
  26. }
复制代码

  • 开协程定时任务去轮循落盘的待纳管k8s集群记录
  • 考虑纳管的k8s集群数据可控,变更时机可控,采用md5校验的方式判断是否发生集群变更
下面的k8s.CheckClusterChanged(mgr.clusterConfigs) 是利用对kube-configs做md5, 前后对比判断集群是否发生变更。
[code]func (mgr *InformerManager) monitorcLusterChanged() bool {        ticker := time.NewTicker(30 * time.Second)        defer ticker.Stop()        for {                select {                case
您需要登录后才可以回帖 登录 | 立即注册