在哪里可以找到本地系统中的 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
的配置方式)。一些选项是:
- Kubernetes.io: Docs: Setup: Production environment: Tools: Kubeadm: Create cluster 还有:
- Github.com: Kubernetes sigs: Kubespray
A side note!
Both: kubespray
and minikube
are using kubeadm
as a bootstrapper!
我还会考虑创建额外的调度程序来负责生成您的工作负载(通过在 YAML
清单中引用):
我还没有对它进行广泛和长期的测试,但我设法包含了您为 kube-scheduler
.
引用的 YAML
清单
Disclaimers!
- Please consider below example as a workaround!
- 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-scheduler
的 command
。它将在提到的位置查找文件。
连接到您的 minikube
实例($ minikube ssh
)和 edit/add 文件:
您的 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
状态。
其他资源:
我目前在 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
的配置方式)。一些选项是:
- Kubernetes.io: Docs: Setup: Production environment: Tools: Kubeadm: Create cluster 还有:
- Github.com: Kubernetes sigs: Kubespray
A side note!
Both:
kubespray
andminikube
are usingkubeadm
as a bootstrapper!
我还会考虑创建额外的调度程序来负责生成您的工作负载(通过在 YAML
清单中引用):
我还没有对它进行广泛和长期的测试,但我设法包含了您为 kube-scheduler
.
YAML
清单
Disclaimers!
- Please consider below example as a workaround!
- The method described below is not persistent.
步骤:
- 使用
--extra-config
启动您的 - 连接到您的
minikube
实例和 edit/add 文件:/etc/kubernetes/manifests/kube-scheduler.yaml
- 新建
KubeSchedulerConfiguration
- 删除失败的
kube-scheduler
Pod
并等待重新创建。
minikube
实例
使用 --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
)和 edit/add 文件:
您的 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
状态。
其他资源: