【问题标题】:Enable custom kubernetes scheduler for a namespace为命名空间启用自定义 kubernetes 调度程序
【发布时间】:2021-03-16 22:00:39
【问题描述】:

我有一个 k8 作业,它会启动多个 pod。该作业用于负载测试,因此所有 pod 都需要同时出现。在所有要调度的 pod 的节点都可用之前,不应启动作业。 我遇到了 kube-batch https://github.com/kubernetes-sigs/kube-batch 来做这个调度。我有几个问题:

1.如何为集群中的一个命名空间启用kube-batch?

2. 按照教程安装 kube-batch。但是 pod 在启动时失败并出现以下错误。如何解决这个错误?

I1204 20:07:55.911393       1 allocate.go:96] Queue <default> is overused, ignore it.

I1204 20:07:55.911399       1 allocate.go:194] Leaving Allocate ...

I1204 20:07:55.911407       1 backfill.go:41] Enter Backfill ...

I1204 20:07:55.911413       1 backfill.go:71] Leaving Backfill ...

E1204 20:07:55.911521       1 runtime.go:69] Observed a panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:76

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:65

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:51

/usr/local/go/src/runtime/asm_amd64.s:522

/usr/local/go/src/runtime/panic.go:513

/usr/local/go/src/runtime/panic.go:82

/usr/local/go/src/runtime/signal_unix.go:390

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/pkg/scheduler/framework/session.go:368

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/pkg/scheduler/plugins/gang/gang.go:154

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/pkg/scheduler/framework/framework.go:58

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/pkg/scheduler/scheduler.go:102

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/pkg/scheduler/scheduler.go:85

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:134

/home/root1/servicecomb/go/src/github.com/kubernetes-sigs/kube-batch/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:88

/usr/local/go/src/runtime/asm_amd64.s:1333

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
        panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x148 pc=0x10ab979]

【问题讨论】:

  • 您在哪个环境下工作?您的云提供商是谁?
  • 在 minikube 上本地运行
  • 你确定你已经安装了整个 repo 吗?您在 /src/github.com/kubernetes-sigs/kube-batch/deployment/kube-batch 中有文件夹 crds 吗?你检查过所有的 pods/node 是否都在工作吗?
  • 是的 CRD 已安装。将 pod 添加到缓存后最终失败。
  • 你可以尝试删除 ~/.minikube 文件夹,重新启动,然后再次启动 minikube 吗?

标签: kubernetes kubernetes-jobs kube-scheduler


【解决方案1】:

不确定您想要实现的目标是否可行。在我看来,您可以做的是修改 pods dockerfile 以包含 Supervisord 。然后在 supervisord 中使用 supervisord 的优先级指定当 pod 进入运行状态时要运行的命令。 示例

[program:api]
directory=/usr/local
command=go main.go
priority=100
autostart=true
autorestart=true
stderr_logfile=/var/log
stdout_logfile=/var/log

【讨论】:

  • 如何等待所有 pod 都处于运行状态才能运行一个任务?
猜你喜欢
  • 1970-01-01
  • 2018-05-30
  • 2012-08-07
  • 2010-10-30
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多