如何访问 kubernetes 集群上的 kube-scheduler?
How to access kube-scheduler on a kubernetes cluster?
我正在尝试弄清楚如何使用自定义配置来配置 kubernetes 调度程序,但我在理解调度程序的访问方式时遇到了一些麻烦。
调度程序作为名为 kube-scheduler-it-k8s-master
的 kube-system
命名空间下的 pod 运行。 The documentation 表示您可以通过创建配置文件并调用 kube-scheduler --config <filename>
来配置调度程序。但是我无法直接访问调度程序容器 运行 kubectl exec -it kube-scheduler-it-k8s-master -- /bin/bash
returns:
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 中挂载我的自定义配置文件,并使用 --config
选项集显式调用 kube-scheduler
,但似乎我的更改被还原并且调度程序使用默认设置运行。
我觉得我对 kubernetes 调度程序有一些根本性的误解。我是否应该从调度程序 pod 本身传递自定义调度程序配置?或者这应该以某种方式远程完成?
谢谢!
由于您的X problem是“如何修改调度程序配置”,您可以尝试以下操作。
使用 kubeadm
如果您正在使用 kubeadm
到 bootstrap 集群,您可以使用 --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/
正在更新 清单
您还可以编辑 /etc/kubernetes/manifests/kube-scheduler.yaml
,修改标志以通过配置。确保通过更新 volumes
和 volumeMounts
部分将文件装载到 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
我正在尝试弄清楚如何使用自定义配置来配置 kubernetes 调度程序,但我在理解调度程序的访问方式时遇到了一些麻烦。
调度程序作为名为 kube-scheduler-it-k8s-master
的 kube-system
命名空间下的 pod 运行。 The documentation 表示您可以通过创建配置文件并调用 kube-scheduler --config <filename>
来配置调度程序。但是我无法直接访问调度程序容器 运行 kubectl exec -it kube-scheduler-it-k8s-master -- /bin/bash
returns:
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 中挂载我的自定义配置文件,并使用 --config
选项集显式调用 kube-scheduler
,但似乎我的更改被还原并且调度程序使用默认设置运行。
我觉得我对 kubernetes 调度程序有一些根本性的误解。我是否应该从调度程序 pod 本身传递自定义调度程序配置?或者这应该以某种方式远程完成?
谢谢!
由于您的X problem是“如何修改调度程序配置”,您可以尝试以下操作。
使用 kubeadm
如果您正在使用 kubeadm
到 bootstrap 集群,您可以使用 --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/
正在更新 清单
您还可以编辑 /etc/kubernetes/manifests/kube-scheduler.yaml
,修改标志以通过配置。确保通过更新 volumes
和 volumeMounts
部分将文件装载到 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