at http://blog.kubernetes.io/2017/03/advanced-scheduling-in-kubernetes.html给出了一个kubernetes自定义调度程序的例子,它是用bash语言编写的。 我的问题是如何将这种自定义调度程序用于pod? 它说:“请注意,您需要与kubectl代理一起运行它才能正常工作”,这对我来说不是很清楚。如何使用bash语言编写的kubernetes自定义调度程序(在谷歌云上)?
我将不胜感激任何帮助。 谢谢
at http://blog.kubernetes.io/2017/03/advanced-scheduling-in-kubernetes.html给出了一个kubernetes自定义调度程序的例子,它是用bash语言编写的。 我的问题是如何将这种自定义调度程序用于pod? 它说:“请注意,您需要与kubectl代理一起运行它才能正常工作”,这对我来说不是很清楚。如何使用bash语言编写的kubernetes自定义调度程序(在谷歌云上)?
我将不胜感激任何帮助。 谢谢
您需要部署调度程序。然后将该调度程序关联到您的窗格。
这是一个伟大的写了起来:https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
这里是my-scheduler
的示例部署:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
labels:
component: scheduler
tier: control-plane
name: my-scheduler
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
component: scheduler
tier: control-plane
version: second
spec:
containers:
- command:
- /usr/local/bin/kube-scheduler
- --address=0.0.0.0
- --leader-elect=false
- --scheduler-name=my-scheduler
image: gcr.io/my-gcp-project/my-kube-scheduler:1.0
livenessProbe:
httpGet:
path: /healthz
port: 10251
initialDelaySeconds: 15
name: kube-second-scheduler
readinessProbe:
httpGet:
path: /healthz
port: 10251
resources:
requests:
cpu: '0.1'
securityContext:
privileged: false
volumeMounts: []
hostNetwork: false
hostPID: false
volumes: []
这里是如何吊舱连接到您的调度:
apiVersion: v1
kind: Pod
metadata:
name: annotation-second-scheduler
labels:
name: multischeduler-example
spec:
schedulerName: my-scheduler
containers:
- name: pod-with-second-annotation-container
image: gcr.io/google_containers/pause:2.0
上面的关键部分是spec.schedulerName
。
非常感谢您的回答。如果我的问题很基本,我对kubernetes很陌生,对不起。 – samanta
这是否意味着我需要从调度程序构建图像,即从用bash语言编写的调度程序创建图像?然后在部署中使用它? – samanta
它会出现这样。看起来调度程序是位于kube-system名称空间中的部署。这个例子可能有所帮助:https://github.com/kubernetes/kubernetes/tree/master/plugin/pkg/scheduler。更具体地说:https://github.com/kubernetes/kubernetes/blob/master/plugin/pkg/scheduler/scheduler.go – Tr1gZer0
顺便说一下,我需要使用这样的自定义调度程序来将Pod分配给Google云群集中的节点。 – samanta