我目前在 Minikube 集群中工作并希望更改 kubernetes 调度程序配置的一些标志,但我找不到它。该文件看起来像-
apiVersion: kubescheduler.config.k8s.io/v1alpha1
kind: KubeSchedulerConfiguration
algorithmSource:
provider: DefaultProvider
...
disablePreemption: true
它的名字是什么,我在哪里可以找到它?
答案 0 :(得分:0)
将此答案作为社区 wiki 发布以设置基线并提供额外的资源/参考,而不是提供明确的解决方案。
随意编辑和扩展。
我在 KubeSchedulerConfiguration
中没有找到您引用的文件 (minikube
)。
minikube
配置过程不会创建它,也不会在配置文件(/etc/kubernetes/manifests/kube-scheduler.yaml
和 --config=PATH
参数)中引用它。
我认为您可以查看其他 Kubernetes 解决方案,您可以在其中配置集群的创建方式(kube-scheduler
的配置方式)。一些选项是:
附注!
两者:kubespray
和 minikube
都使用 kubeadm
作为引导程序!
我还会考虑创建额外的调度程序来负责生成您的工作负载(通过在 YAML
清单中引用):
我没有对其进行广泛和长期的测试,但我设法包含了您为 YAML
引用的 kube-scheduler
清单。
免责声明!
步骤:
minikube
启动您的 --extra-config
实例minikube
实例并编辑/添加文件:
/etc/kubernetes/manifests/kube-scheduler.yaml
KubeSchedulerConfiguration
kube-scheduler
Pod
并等待它被重新创建。minikube
--extra-config
实例
如前所述,您可以为您的 $ minikube start
添加一些附加参数,以便向下传递到配置过程。
在此设置中,您可以使用 $ minikube start ...
传递它,也可以稍后手动进行。
$ minikube start --extra-config=scheduler.config="/etc/kubernetes/sched.yaml"
以上参数会将 - --config=/etc/kubernetes/sched.yaml
添加到您的 command
的 kube-scheduler
。它将在提到的位置查找文件。
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
状态。
其他资源: