allbet:kubernetes资源均衡器Descheduler

admin 3个月前 (06-26) 科技 39 0

靠山

Kubernetes中的调剂是将待处理的pod绑定到节点的历程,由Kubernetes的一个名为kube-scheduler的组件执行。调剂程序的决议,无论是否可以或不能调剂容器,都由其可设置计谋指导,该计谋包罗一组规则,称为谓词和优先级。调剂程序的决议受到其在第一次调剂时泛起新pod时的Kubernetes集群视图的影响。由于Kubernetes集群异常动态且状态随时间而转变,因此可能需要将已经运行的pod移动到其他节点,缘故原由如下:

  • 一些节点不足或过分使用。
  • 原始调剂决议不再适用,由于在节点中添加或删除了污点或标签,不再知足pod / node亲和性要求。
  • 某些节点发生故障,其pod已移至其他节点。
  • 新节点将添加到群集中。

因此,可能会在群集中不太理想的节点上放置多个pod。Descheduler凭据其政策,发现可以移动并移除它们的pod。请注意,在当前的实现中,descheduler不会放置替换被驱逐的pod,而是依赖于默认的调剂程序。

Descheduler二次调剂

GitHub地址:https://github.com/kubernetes-sigs/descheduler

下面是主要的设置

  • configmap.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: descheduler-policy-configmap
  namespace: kube-system
data:
  policy.yaml: |
    apiVersion: "descheduler/v1alpha1"
    kind: "DeschedulerPolicy"
    strategies:
      "RemoveDuplicates":
         enabled: true
      "RemovePodsViolatingInterPodAntiAffinity":
         enabled: true
      "LowNodeUtilization":
         enabled: true
         params:
           nodeResourceUtilizationThresholds:
             thresholds:
               "cpu" : 30
               "memory": 40
               "pods": 50
             targetThresholds:
               "cpu" : 20
               "memory": 25
               "pods": 15

RemoveDuplicates计谋

该计谋发现未充分行使的节点,而且若是可能的话,从其他节点驱逐pod,希望在这些未充分行使的节点上放置被驱逐的pod的重新建立。此计谋的参数设置在nodeResourceUtilizationThresholds

节点的行使率低是由可设置的阈值决议的thresholdsthresholds可以按百分比为cpu,内存和pod数目设置阈值 。若是节点的使用率低于所有(cpu,内存和pod数)的阈值,则该节点被视为未充分行使。现在,pods的请求资源需求被思量用于盘算节点资源行使率。

另有另一个可设置的阈值,targetThresholds用于盘算可以驱逐pod的潜在节点。任何节点,所述阈值之间,thresholds而且targetThresholds被视为适当地行使,而且不思量驱逐。阈值targetThresholds也可以按百分比设置为cpu,内存和pod数目。

简朴的说:thresholds是没有到达资源使用的node视为资源使用率低可以分配做为预选节点, targetThresholds是已经知足这个条件的node资源重要要把上面的pod迁徙。

  • cronjob.yaml
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: descheduler-cronjob
  namespace: kube-system
spec:
  #准时义务时间可调 schedule:
"*/10 * * * *" concurrencyPolicy: "Forbid" jobTemplate: spec: template: metadata: name: descheduler-pod spec: priorityClassName: system-cluster-critical containers: - name: descheduler image: aveshagarwal/descheduler #image: us.gcr.io/k8s-artifacts-prod/descheduler:v0.10.0 volumeMounts: - mountPath: /policy-dir name: policy-volume command: - "/bin/descheduler" args: - "--policy-config-file" - "/policy-dir/policy.yaml" - "--v" - "3" restartPolicy: "Never" serviceAccountName: descheduler-sa volumes: - name: policy-volume configMap: name: descheduler-policy-configmap
  • rbac.yaml
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: descheduler-cluster-role
  namespace: kube-system
rules:
- apiGroups: [""]
  resources: ["events"]
  verbs: ["create", "update"]
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get", "watch", "list"]
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "watch", "list", "delete"]
- apiGroups: [""]
  resources: ["pods/eviction"]
  verbs: ["create"]
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: descheduler-sa
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: descheduler-cluster-role-binding
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: descheduler-cluster-role
subjects:
  - name: descheduler-sa
    kind: ServiceAccount
    namespace: kube-system

kubectl apply -f 执行上面三个文件,查看日志若有知足再次调剂条件的 会重新提议二次调剂平衡node资源。

 

 

 

 

 

,

欧博亚洲手机版下载

欢迎进入欧博亚洲手机版下载(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

Allbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:allbet:kubernetes资源均衡器Descheduler

文章归档

站点信息

  • 文章总数:348
  • 页面总数:0
  • 分类总数:8
  • 标签总数:711
  • 评论总数:20
  • 浏览总数:3418