在EKS集群上配置MostAllocated



我们希望将尽可能多的pod打包到集群中的每个节点中,以减少我们在某些环境中拥有的节点数量。我看到了https://github.com/kubernetes-sigs/descheduler HighNodeUtilization策略,它似乎符合我们的需求。然而,集群似乎需要有评分策略MostAllocated

我相信EKS中的kube-scheduler是无法配置的。如何配置MostAllocated计分策略?

更好的是,我如何在不使用desscheduler的情况下在集群中尽可能少的节点中配置这种自动打包pod ?

尝试在未配置MostAllocated评分策略的情况下按原样部署调度器。显然没有提供预期的结果。

我在网上进行了大量的挖掘,导致我不得不创建一个自定义调度程序,但我发现很少/不清楚能够这样做的资源。

Eks不提供覆盖默认调度器配置的能力,这意味着实际上不能用MostAllocated评分策略配置default-scheduler配置文件。但是,您可以在默认调度器旁边运行您自己的调度器,并且这个调度器可以按照您喜欢的方式配置。一旦您创建了自定义调度器,您就可以使用MostAllocated评分策略覆盖调度器的配置,然后指示您的工作负载使用该调度器。

为了运行多个调度器,你必须设置几个Kubernetes对象。这些对象在上面链接的指南中有文档记录:

  • ServiceAccount
  • ClusterRoleBinding x2
  • RoleBinding
  • ConfigMap
  • 部署

部署将使用Google提供的标准kube-scheduler映像,除非您想创建自己的映像。我不推荐。

Major注意:确保您的kube-scheduler的版本与控制平面的版本相同。否则将无法工作。

此外,确保您的kube-scheduler版本与用于配置调度程序配置文件的配置对象的版本兼容。v1beta2v1.22.x->v1.24.x,但只有v1beta3v1v.1.25+是安全的。

例如,下面是一个部署清单和配置映射的工作版本,用于创建与k8sv.1.22.x兼容的自定义调度程序。注意,您仍然需要创建其他对象以使其工作:

apiVersion: apps/v1
kind: Deployment
metadata:
name: custom-scheduler
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
name: custom-scheduler
template:
metadata:
labels:
component: scheduler
name: custom-scheduler
tier: control-plane
spec:
containers:
- command:
- /usr/local/bin/kube-scheduler
- --config=/etc/kubernetes/custom-scheduler/custom-scheduler-config.yaml
env: []
image: registry.k8s.io/kube-scheduler:v1.22.16
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /healthz
port: 10259
scheme: HTTPS
name: custom-scheduler
readinessProbe:
httpGet:
path: /healthz
port: 10259
scheme: HTTPS
volumeMounts:
- mountPath: /etc/kubernetes/custom-scheduler
name: custom-scheduler-config
serviceAccountName: custom-scheduler
volumes:
- configMap:
name: custom-scheduler-config
name: custom-scheduler-config
apiVersion: v1
kind: ConfigMap
data:
custom-scheduler-config.yaml: |
apiVersion: kubescheduler.config.k8s.io/v1beta2
kind: KubeSchedulerConfiguration
leaderElection:
leaderElect: false
profiles:
- pluginConfig:
- args:
apiVersion: kubescheduler.config.k8s.io/v1beta2
kind: NodeResourcesFitArgs
scoringStrategy:
resources:
- name: cpu
weight: 1
- name: memory
weight: 1
type: MostAllocated
name: NodeResourcesFit
plugins:
score:
enabled:
- name: NodeResourcesFit
weight: 1
schedulerName: custom-scheduler
metadata:
name: custom-scheduler-config
namespace: kube-system

相关内容

  • 没有找到相关文章

最新更新