在哪里可以找到本地系统中的 Kubernetes 调度程序配置文件

Where to find the Kubernetes Scheduler Configuration file in local system

我目前在 Minikube 集群中工作,希望更改 kubernetes 调度程序配置的一些标志,但我找不到。该文件看起来像-

apiVersion: kubescheduler.config.k8s.io/v1alpha1
kind: KubeSchedulerConfiguration
algorithmSource:
  provider: DefaultProvider
...
disablePreemption: true

它叫什么名字,我在哪里可以找到它?

将此答案作为社区 Wiki 发布以设置基准并提供额外的 resources/references 而不是给出明确的解决方案。

随意编辑和扩展。


我没有在 minikube.

中找到您引用的文件 (KubeSchedulerConfiguration)

minikube 配置过程不会创建它,也不会在配置文件(/etc/kubernetes/manifests/kube-scheduler.yaml--config=PATH 参数)中引用它。

我想您可以看看其他 Kubernetes 解决方案,您可以在其中配置集群的创建方式(kube-scheduler 的配置方式)。一些选项是:

A side note!

Both: kubespray and minikube are using kubeadm as a bootstrapper!

我还会考虑创建额外的调度程序来负责生成您的工作负载(通过在 YAML 清单中引用):


我还没有对它进行广泛和长期的测试,但我设法包含了您为 kube-scheduler.

引用的 YAML 清单

Disclaimers!

  1. Please consider below example as a workaround!
  2. The method described below is not persistent.

步骤:

  • 使用 --extra-config
  • 启动您的 minikube 实例
  • 连接到您的 minikube 实例和 edit/add 文件:
    • /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-schedulercommand。它将在提到的位置查找文件。

连接到您的 minikube 实例($ minikube ssh)和 edit/add 文件:

您的 kube-scheduler 将失败,因为您传递的参数 (config) 不正确(缺少文件)。要解决此问题,您需要:

  • 添加:/etc/kubernetes/sched.yaml您想要的配置
  • 修改:/etc/kubernetes/manifests/kube-scheduler.yaml
  1. 添加到:volumeMounts
    - mountPath: /etc/kubernetes/sched.yaml
      name: scheduler
      readOnly: true
  1. 添加到 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 状态。


其他资源: