Rui*_*mba 3 kubernetes azure-aks kube-scheduler
我正在尝试自定义 AKS 集群 (kubernetes v1.19.3) 上的行为kube-scheduler,如调度程序配置中所述。
我的目标是使用该NodeResourcesMostAllocated插件来使用尽可能少的节点来调度 Pod。
考虑以下文件 -most-allocated-scheduler.yaml
apiVersion: kubescheduler.config.k8s.io/v1beta1
kind: KubeSchedulerConfiguration
profiles:
- schedulerName: default-scheduler
- schedulerName: most-allocated-scheduler
plugins:
score:
disabled:
- name: NodeResourcesLeastAllocated
enabled:
- name: NodeResourcesMostAllocated
weight: 2
Run Code Online (Sandbox Code Playgroud)
根据文档,我可以通过运行以下命令来指定调度配置文件:
kube-scheduler --config most-allocated-scheduler.yaml
Run Code Online (Sandbox Code Playgroud)
但是我到底在哪里可以找到kube-scheduler来运行上述命令呢?我想在管道上理想地做到这一点。使用AKS时可以做这样的事情吗?
kube-scheduler是kubernetes 控制平面的一部分。它的组件安排在主节点上,在托管 kubernetes 解决方案(例如AKS、GKE或EKS)上,您无权访问该主节点。
这意味着无法在正在运行的AKSkube-scheduler群集上重新配置。与AKS 的 GitHub页面上的答案进行比较。
但是,在创建新集群时,可以使用集群定义为 kube-scheduler 提供自定义配置,特别是在SchedulerConfig部分中:
调度程序配置
schedulerConfig声明在所有主节点上运行的 kube-scheduler 守护进程的运行时配置。kubeletConfig与、 一样controllerManagerConfig,apiServerConfig它是一个通用键/值对象,也是 的子属性kubernetesConfig。自定义 apiserver 配置示例:Run Code Online (Sandbox Code Playgroud)"kubernetesConfig": { "schedulerConfig": { "--v": "2" } }请参阅 此处 以获取受支持的 kube-scheduler 选项的参考。
...
但请记住,并非所有选项都受支持。--kubeconfig文档说不支持eg ,但正如您可以在此处阅读的那样,无论如何,该标志已被弃用。没有关于--configflag 的任何内容,因此您可以简单地尝试它是否有效。
您还可以通过使用Kubernetes 组件清单的自定义 YAML来实现它:
除了上述插件之外,还可以为 kube-scheduler、kube-controller-manager、cloud-controller-manager 和 kube-apiserver 配置自定义 YAML 规范。您需要将 kubernetes 清单 YAML 文件的 base64 编码字符串传递给KubernetesComponentConfig["data"] 。例如,要传递自定义 kube-scheduler 配置,请执行以下操作:
Run Code Online (Sandbox Code Playgroud)"kubernetesConfig": { "schedulerConfig": { "data" : "<base64-encoded string of your k8s manifest YAML>" } }注意:插件的自定义 YAML 是一项实验性功能。由于
Addons.Data允许您提供自己的脚本,因此您应对其错误或故障造成的任何不良后果负责。使用风险自负。
正如您所看到的,即使在托管 kubernetes 解决方案(例如AKS)中,kube-scheduler也可以在一定程度上进行自定义,但仅限于创建新集群时。
| 归档时间: |
|
| 查看次数: |
3399 次 |
| 最近记录: |