0

我试图弄清楚如何使用自定义配置来配置 kubernetes 调度程序,但我在理解调度程序的访问方式时遇到了一些麻烦。

调度程序在kube-system名为kube-scheduler-it-k8s-master. 文档 说您可以通过创建配置文件并调用kube-scheduler --config <filename>. kubectl exec -it kube-scheduler-it-k8s-master -- /bin/bash但是,当运行返回时,我无法直接访问调度程序容器:

OCI runtime exec failed: exec failed: container_linux.go:370: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
command terminated with exit code 126

我尝试修改/etc/kubernetes/manifests/kube-scheduler以在 pod 中挂载我的自定义配置文件并kube-scheduler使用--config选项集显式调用,但似乎我的更改被还原并且调度程序使用默认设置运行。

我觉得我从根本上误解了关于 kubernetes 调度程序的一些东西。我是否应该从调度程序 pod 本身传入自定义调度程序配置?或者这应该以某种方式远程完成?

谢谢!

4

1 回答 1

2

由于您的X 问题是“如何修改调度程序配置”,您可以尝试以下方法。


使用 kubeadm

如果您kubeadm用于引导集群,则可以--config在运行时使用标志kubeadm init来传递类型的自定义配置对象,ClusterConfiguration以将额外的参数传递给控制平面组件。

调度程序的示例配置:

$ cat sched.conf
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.16.0
scheduler:
  extraArgs:
    address: 0.0.0.0
    config: /home/johndoe/schedconfig.yaml
    kubeconfig: /home/johndoe/kubeconfig.yaml
$ kubeadm init --config sched.conf

您还可以尝试kubeadm upgrade apply --config sched.conf <k8s version>在实时集群上应用更新的配置。

参考:https ://kubernetes.io/docs/setup/production-environment/tools/kubeadm/control-plane-flags/


更新静态 pod清单

您还可以编辑/etc/kubernetes/manifests/kube-scheduler.yaml、修改标志以传递配置。volumes确保通过 update和volumeMountssection将文件挂载到 pod 中。

spec:
  containers:
  - command:
    - kube-scheduler
    - --authentication-kubeconfig=/etc/kubernetes/scheduler.conf
    - --authorization-kubeconfig=/etc/kubernetes/scheduler.conf
    - --bind-address=127.0.0.1
    - --kubeconfig=/etc/kubernetes/scheduler.conf
    - --leader-elect=true
    - --config=/etc/kubernetes/mycustomconfig.conf
    volumeMounts:
    - mountPath: /etc/kubernetes/scheduler.conf
      name: kubeconfig
      readOnly: true
    - mountPath: /etc/kubernetes/mycustomconfig.conf
      name: customconfig
      readOnly: true
  volumes:
  - hostPath:
      path: /etc/kubernetes/scheduler.conf
      type: FileOrCreate
    name: kubeconfig
  - hostPath:
      path: /etc/kubernetes/mycustomconfig.conf
      type: FileOrCreate
    name: customconfig
于 2021-01-28T19:02:50.987 回答