我目前在Minikube集群中工作,希望更改kubernetes调度器配置的一些标志,但我找不到。文件看起来像-
apiVersion: kubescheduler.config.k8s.io/v1alpha1
kind: KubeSchedulerConfiguration
algorithmSource:
provider: DefaultProvider
...
disablePreemption: true
它叫什么名字?我在哪里能找到它?
将此答案作为社区wiki发布,以设置基线并提供额外的资源/参考,而不是给出最终的解决方案。
请随意编辑和扩展。
我在minikube
中找不到您正在引用的文件(KubeSchedulerConfiguration
(。
minikube
配置过程不会创建它,也不会在配置文件(/etc/kubernetes/manifests/kube-scheduler.yaml
和--config=PATH
参数(中引用它。
我想你可以看看其他Kubernetes解决方案,在那里你可以配置集群的创建方式(kube-scheduler
的配置方式(。其中一些选项是:
- Kubernetes.io:文档:设置:生产环境:工具:Kubeadm:创建集群以及:
- Kubernetes.io:文档:设置:生产环境:工具:Kubeadm:控制平面标志
- Github.com:Kubernetes sigs:Kubesray
旁注!
kubespray
和minikube
都使用kubeadm
作为引导程序!
我还将考虑创建额外的调度器,负责生成您的工作负载(通过在YAML
清单中引用(:
- Kubernetes.io:文档:任务:扩展Kubernetes:配置多个调度器
我还没有对其进行广泛的长期测试,但我已经设法包含了您为kube-scheduler
引用的YAML
清单。
免责声明
- 请将以下示例视为解决方法
- 下面描述的方法是不持久的
步骤:
- 使用
--extra-config
启动minikube
实例 - 连接到您的
minikube
实例并编辑/添加文件:/etc/kubernetes/manifests/kube-scheduler.yaml
- 新建
KubeSchedulerConfiguration
- 删除出现故障的
kube-scheduler
Pod
,然后等待重新创建
用--extra-config
启动您的minikube
实例
如前所述,您可以为$ minikube start
添加一些附加参数,以便传递到供应过程中。
在这个设置中,你可以用$ minikube start ...
传递它,也可以稍后手动传递
$ minikube start --extra-config=scheduler.config="/etc/kubernetes/sched.yaml"
以上参数将把- --config=/etc/kubernetes/sched.yaml
添加到kube-scheduler
的command
中。它将在上述位置查找文件。
连接到minikube
实例($ minikube ssh
(并编辑/添加文件:
您的kube-scheduler
将失败,因为您传递了一个不正确的参数(config
((缺少文件(。要解决此问题,您需要:
- 添加:具有所需配置的
/etc/kubernetes/sched.yaml
- 修改:
/etc/kubernetes/manifests/kube-scheduler.yaml
:
- 添加到:
volumeMounts
:
- mountPath: /etc/kubernetes/sched.yaml
name: scheduler
readOnly: true
- 添加到
volumes
:
- hostPath:
path: /etc/kubernetes/sched.conf
type: FileOrCreate
name: scheduler
删除失败的kube-scheduler
Pod
并等待其重新创建
您需要重新部署修改后的调度程序以运行其新配置:
$ kubectl delete pod -n kube-system kube-scheduler-minikube
一段时间后,您应该会看到kube-scheduler
处于Ready
状态。
其他资源:
- Kubernetes.io:文档:概念:调度驱逐:Kube调度器
- Kubernetes.io:Docs:Reference:命令行工具Reference:Kube scheduler