Open XimuLyu opened 1 year ago
kubectl describe pod <pod-name> -n kube-system | grep -E '(Node-Selectors|Tolerations)'
命令可以查看pod的亲和性规则:
Node-Selectors: myscheduler=myscheduler
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
应该是由于Node-Selectors
的设置导致调度失败,删除drs-scheduler.yaml
中的nodeSelector
设置后重新部署可以正常运行
spec:
serviceAccountName: my-scheduler
nodeSelector:
myscheduler: myscheduler
谢谢您的回复!
根据提示drs-scheduler
的pod已经成功运行。
在各个节点运行drs-monitor
和drs-scheduler
部分(python代码)后,我尝试部署cpu.yaml
。
./apply.sh cpu.yaml
另人遗憾的是这个pod的运行状态也一直是pending,我删除了cpu.yaml
中的nodeName
设置后也无济于事。
它的亲和力规则是这样的
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
对此我没有太多头绪
后来我发现dqn.go
中有设置http的url
schedulerurl := "http://192.168.1.113:1234/choose"
我并没有修改这部分并生成自己的镜像,这是否是导致pod无法正常调度的主要原因。
您可以继续使用kubectl describe pod <pod-name>
查看调度失败的具体原因,但是我觉得您的怀疑是对的
drs scheduler
与decision maker
之间以及decision maker
和monitor
之间都是通过ip地址进行通信的,您需要根据您的集群配置进行修改(可能涉及到dqn.go, dqn.py, monitor.py
),对dqn.go
进行修改后需要您自己制作scheduler
的镜像,具体过程可以参考https://kubernetes.io/docs/tasks/extend-kubernetes/configure-multiple-schedulers/
另外,您可以在dqn.go
中加入一些log
,部署应用后可以通过kubectl logs <pod_name>
查看log
,方便您了解调度器的工作状态,便于调试和测试
@XimuLyu 你好,我最近也准备复现一下,能否一起交流一下呢?vx:chengleqi6g。 @JolyonJian 作者也可以加我一下
在部署
drs-scheduler
pod之后发现这个pod的状态一直是pending 运行kubectl get pods --all-namespaces
然后
sudo kubectl describe pod my-scheduler-fd7d7fc97-2krp5 -n kube-system
得到在此之前我已经将master节点也设为可调度,貌似
default-scheduler
依旧无法正确的调度这个pod。