Skip to content

AgentGuo/scheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

scheduler

目前先简单实现一个单体调度器(scheduler-main),划分了四个文件夹:

  • cmd 程序入口,使用cobra库 √
    • scheduler-main 主调度器入口
    • metrics-cli 节点监测器入口
  • pkg 具体实现
    • 主调度器
      • 任务调度 √
      • 任务绑定 √
    • 节点检测器
      • 节点状态监测 √
  • task 调度任务相关
    • task 任务定义 √
    • task 调度队列 √
  • util 工具库

redis存储内容:

key subKey 说明
metricsInfo {主机名} 存储动态监控信息
nodeInfo {主机名} 存储主机静态资源信息
taskInfo {podName}-{namespace} 调度结果信息

TODO:

  • 节点标签
  • 插件化
  • 更新一下文档

使用方法:

  1. 启动redis服务器(启动失败大概率是端口占用了ps -elf | grep redis, kill $pid)
redis-server ./cmd/metrics-cli/redis.conf
  1. 各个集群节点启动资源监控进程
cd cmd/metrics-cli/ && go build -v
./metrics-cli -f config.yaml
  1. 启动调度器进程
cd cmd/scheduler-main/ && go build -v
./scheduler-main -f config.yaml
  1. 启动测试podkubectl create -f test_pod.yaml(目前特化的调度逻辑只会调度default下的名为pause的pod,见https://github.com/AgentGuo/scheduler/blob/main/pkg/schedulermain/schedulermain.go#L49), test_pod.yaml如下:
apiVersion: v1
kind: Pod
metadata:
  name: pause
  namespace: default
spec:
  schedulerName: my-scheduler
  containers:
  - name: pause
    image: registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5
    command:
      - /pause
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

img.png

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages