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

时间:2021-07-09 07:23:15

标签: kubernetes minikube

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

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

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

1 个答案:

答案 0 :(得分:0)

将此答案作为社区 wiki 发布以设置基线并提供额外的资源/参考,而不是提供明确的解决方案。

随意编辑和扩展。


我在 KubeSchedulerConfiguration 中没有找到您引用的文件 (minikube)。

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

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

<块引用>

附注!

两者:kubesprayminikube 都使用 kubeadm 作为引导程序!

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


我没有对其进行广泛和长期的测试,但我设法包含了您为 YAML 引用的 kube-scheduler 清单。

<块引用>

免责声明!

  1. 请将以下示例视为一种解决方法
  2. 下面描述的方法不是持久的。

步骤:

  • 使用 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 添加到您的 commandkube-scheduler。它将在提到的位置查找文件。

连接到您的 minikube 实例 ($ minikube ssh) 并编辑/添加文件:

您的 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 状态。


其他资源: