我可以使用kubernetes中的自定义调度程序来更改未调度的pod的计算资源的限制吗

时间:2018-07-24 13:55:14

标签: kubernetes-go-client

我是kubernetes的新手,我正在研究kubernetes集群的计算资源管理。因此,我在旅途中下载了玩具调度程序(https://github.com/kelseyhightower/scheduler)。我知道一旦将计算资源请求设置为Pod,就无法更改它们。但是,假设我尚未在yaml文件中设置pod的资源要求: nginx.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      schedulerName: hightower
      containers:
      - name: nginx
        image: nginx
        ports:
          - containerPort: 8080
            protocol: TCP

我可以对自定义调度程序尝试调度的每个Pod应用资源请求吗?

2 个答案:

答案 0 :(得分:0)

根据官方的Kubernetes Documentation,为了管理集群中的计算资源,您必须在{{中相应地指定资源类型,例如CPUMemory的最大数量。 1}}或Pod(如果您考虑制作ReplicaSets)清单文件。因此,在创建Deployment时,Pod选择一个合适的SchedulerNode运行,假设请求的资源不会消耗大部分Pod功能。

自定义调度程序可以扩展本机Kubernetes调度程序的功能和灵活性;但是,他们不能改变在Kubernetes集群中如何配置和管理资源请求或资源限制的方法。

答案 1 :(得分:0)

谢谢您的回应,我同意自定义调度程序的实现主要涉及如何将Pod绑定到节点,但是我认为我也可以在绑定之前对Pod(如果不存在)实施资源限制。以及等待播客的时间。事实证明,我唯一能做的就是使用部署而不是Pod,并更改部署的Pod模板以应用计算资源限制。这种方式不像我想要的那样“干净”,因为挂起的Pod已被破坏,而kubernetes产生了包含资源限制的新Pod。如果有人感兴趣,那就是我的方法

async