上云无忧 > 文档中心 > 百度智能云容器引擎服务 CCE 动态调度插件说明
容器引擎服务CCE
百度智能云容器引擎服务 CCE 动态调度插件说明

文档简介:
cce-dysched-extender 是 k8s 默认调度器的一个插件,利用 scheduler extender 机制向 kube-scheduler 注册 Filter、Prioritize 钩子,来干预默认调度器的调度行为。 节点的 metrics 数据来自 metrics-server 组件,在部署 cce-dysched-extender 之前需要确保集群中的 metrics-server 组件正常工作。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

CCE 动态调度插件

cce-dysched-extender 是 k8s 默认调度器的一个插件,利用 scheduler extender 机制向 kube-scheduler 注册 Filter、Prioritize 钩子,来干预默认调度器的调度行为。

节点的 metrics 数据来自 metrics-server 组件,在部署 cce-dysched-extender 之前需要确保集群中的 metrics-server 组件正常工作

该插件主要功能如下:

  • 预选阶段(Filter),支持根据阈值过滤掉高资源使用率的节点;
  • 优选节点(Prioritize),资源使用率较低的节点优先级较高,比较的顺序为 cpu, memory;

可以根据自己的实际情况设置资源容忍阈值 --tolerance-memory-rate 或 --tolerance-cpu-rate 参数,两个参数默认值为 80%

安装部署

  1. 部署 cce-dysched-extender 插件,执行 kubectl apply -f all-in-one.yaml 命令,all-in-one.yaml 文件内容如下:

apiVersion: v1 kind: ServiceAccount metadata: labels: app: cce-dysched-extender app.kubernetes.
io/component: controller app.kubernetes.io/name: cce-dysched-extender name: cce-dysched-extender
 namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: 
labels: app: cce-dysched-extender app.kubernetes.io/name: cce-dysched-extender name:
 cce-dysched-extender rules: - apiGroups: - "" resources: - nodes - pods verbs: -
 get - list - watch - apiGroups: - metrics.k8s.io resources: - nodes - pods verbs:
 - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind:
 ClusterRoleBinding metadata: labels: app: cce-dysched-extender app.kubernetes.io/name:
 cce-dysched-extender name: cce-dysched-extender roleRef: apiGroup: rbac.authorization.k8s.
io kind: ClusterRole name: cce-dysched-extender subjects: - kind: ServiceAccount name:
 cce-dysched-extender namespace: kube-system --- apiVersion: v1 kind: Service metadata: 
annotations: service.beta.kubernetes.io/cce-load-balancer-internal-vpc: "true" 
labels: app: cce-dysched-extender name: cce-dysched-extender namespace: kube-system 
spec: ports: - name: http port: 8080 targetPort: 8080 selector: app: cce-dysched-extender
 sessionAffinity: None type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment 
metadata: labels: app: cce-dysched-extender name: cce-dysched-extender namespace:
 kube-system spec: replicas: 1 selector: matchLabels: app: cce-dysched-extender
 template: metadata: labels: app: cce-dysched-extender spec: containers: - 
args: - -v=3 - --tolerance-cpu-rate=80 - --tolerance-memory-rate=80 image: 
registry.baidubce.com/cce-plugin-pro/cce-dysched-extender:v0.3.0 imagePullPolicy:
 Always livenessProbe: httpGet: path: /healthz port: http scheme: HTTP periodSeconds:
 60 name: dysched-dysched ports: - containerPort: 8080 name: http protocol:
 TCP readinessProbe: httpGet: path: /healthz port: http scheme: HTTP periodSeconds: 
60 resources: limits: cpu: "4" memory: 4Gi requests: cpu: 100m memory:
 100Mi serviceAccountName: cce-dysched-extender

  1. 获取 dysched-extender service ip

$ export DYSCHED_EXTENDER_SVC_IP=$(kubectl get service cce-dysched-extender -n kube-system 
| awk '{print $4}' | grep -v EXTER) $ echo $DYSCHED_EXTENDER_SVC_IP

剩下的都步骤需要在所有 master 节点上执行

  1. 修改 /etc/kubernetes/scheduler-policy.json 这个文件(没有则创建)内容如下, 并把 <DYSCHED_EXTENDER_SVC_IP> 替换为如上步骤中获取的值

{ "kind": "Policy", "apiVersion": "v1", "extenders": [ { "urlPrefix": "http://<DYSCHED_EXTENDER_SVC_IP>
:8080/dysched/extender", "prioritizeVerb": "prioritize", "filterVerb": "filter", "enableHttps": false,
 "nodeCacheCapable": true, "ignorable": true, "weight": 10 } ] }

  1. 修改 kube-scheduler 的启动参数,加上 --policy-config-file=/etc/kubernetes/scheduler-policy.json,使用如下命令
$ vim /etc/systemd/system/kube-scheduler.service
  1. 重启 kube-scheduler, 使用如下命令
$ systemctl daemon-reload && systemctl restart kube-scheduler

相似文档
  • 基于Kubernetes场景下在线、离线作业混部管理组件,通过将作业进行混部,利用在线作业剩余空闲资源运行离线作业,提高集群资源利用率。 组件功能: cce-hybrid-scheduler: 离线任务调度器,根据sla配置及节点动态资源使用率调度离线作业;
  • CCE 提供基于原生 Kubernetes 的容器管理服务,为方便用户更好的使用 CCE,我们从集群、应用、问题排查三个方面,总结出来一些最佳实践的 checklist,强烈建议 CCE 用户在开始使用或服务上线前,能对照 checklist 过一遍,以帮忙您顺利的将服务迁移到 CCE 上,降低因为使用不当导致应用异常或需重建集群的风险。
  • 百度智能云容器引擎CCE基于Kubernetes+Docker构建的弹性高可用的容器集群服务,您可以轻松地在采购的集群上部署所需的业务应用。 本文将以经典的前端应用GuestBook为例,为您展示集群搭建、部署应用的全流程。让您能够使用百度智能云云容器引擎CCE,快速构建一个最简单的web应用。
  • 在一些场景中,用户需要让CCE集群中的节点和Pod具备访问公网的能力,如通过yum install等命令访问外部源地址下载安装软件、容器需要访问公网中的某些服务等等。 我们提供了以下两种方案,可以实现集群访问公网,用户可以根据具体需求自行选择。
  • 私有镜像指位于私有仓库中的Docker镜像,用户需要使用仓库用户名密码登入(docker login)后才能拉取。在CCE集群中,需要为Pod配置imagePullSecrets,才能够在集群中使用私有镜像启动Pod中的容器。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部