首先,由于某些原因,我使用的是不受支持且已过时的 Kubernetes (1.12) 版本,并且无法升级。
我正在尝试配置调度程序以避免在调度程序尝试找到最佳可用节点时更改节点分数来避免在某些节点上运行 pod,我想在调度程序级别而不是通过在部署时使用 nodeAffinity、replicaset 来做到这一点, pod 等级别(因此所有 pod 都会受到此更改的影响)。
在阅读了此处的 k8s 文档后:https ://kubernetes.io/docs/reference/scheduling/config/#scheduling-plugins并检查了 1.12 中是否已经存在一些选项,我正在尝试使用这些NodePreferAvoidPods
插件。在文档中插件指定:
根据节点注解 scheduler.alpha.kubernetes.io/preferAvoidPods 给节点打分
如果正确理解应该做的工作。
因此,我更新了 kube-scheduler.yaml 的静态清单以使用以下配置:
apiVersion: kubescheduler.config.k8s.io/v1alpha1
kind: KubeSchedulerConfiguration
profiles:
- plugins:
score:
enabled:
- name: NodePreferAvoidPods
weight: 100
clientConnection:
kubeconfig: /etc/kubernetes/scheduler.conf
但是向节点添加以下注释
scheduler.alpha.kubernetes.io/preferAvoidPods:
似乎不起作用。
为了测试,我做了一个基本的 nginx 部署,其副本等于工作节点的数量 (4)。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 4
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.21
ports:
- containerPort: 80
然后我检查创建的 pod 的位置kubectl get pods -owide
所以,我相信这个注释需要一些选项才能工作。
我尝试将注释设置为“true”、“1”,但 k8s 拒绝我的更改,我无法确定该注释的有效选项是什么,也找不到任何相关文档。
我已经在 git 版本中检查了 1.12,这个插件已经存在(至少有一些代码行),我认为从那以后行为或设置没有太大变化。
谢谢。