如何访问 Kubernetes 集群上的 kube-scheduler? 使用 kubeadm更新 static pod 清单

如何解决如何访问 Kubernetes 集群上的 kube-scheduler? 使用 kubeadm更新 static pod 清单

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

调度程序在名为 kube-systemkube-scheduler-it-k8s-master 命名空间下作为 pod 运行。 The documentation 表示您可以通过创建配置文件并调用 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 本身传入自定义调度程序配置吗?或者这应该以某种方式远程完成?

谢谢!

解决方法

由于您的X problem是“如何修改调度程序配置”,您可以尝试以下操作。


使用 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/


更新 static pod 清单

您也可以编辑 /etc/kubernetes/manifests/kube-scheduler.yaml,修改标志以传递配置。确保通过更新 volumesvolumeMounts 部分将文件挂载到 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?