如何在kubernetes中指定容器上的cpu或内存资源

时间:2014-11-18 00:31:22

标签: kubernetes

pod的定义取自https://github.com/mesosphere/kubernetes-mesos/blob/master/examples/pod-nginx.json

{  
   "kind":"Pod",
   "apiVersion":"v1beta1",
   "id":"nginx-id-01",
   "desiredState":{  
      "manifest":{  
         "version":"v1beta1",
         "containers":[  
            {  
               "name":"nginx-01",
               "image":"dockerfile/nginx",
               "ports":[  
                  {  
                     "containerPort":80,
                     "hostPort":31000
                  }
               ],
               "livenessProbe":{  
                  "enabled":true,
                  "type":"http",
                  "initialDelaySeconds":30,
                  "httpGet":{  
                     "path":"/index.html",
                     "port":"8081"
                  }
               }
            }
         ]
      }
   },
   "labels":{  
      "name":"foo",
      "cluster":"gce"
   }
}

我似乎无法找到如何指定资源。

4 个答案:

答案 0 :(得分:1)

您可以在https://github.com/GoogleCloudPlatform/kubernetes/blob/master/examples/guestbook/frontend-controller.json#L16

中看到指定Kubernetes资源的示例

但是,根据https://github.com/GoogleCloudPlatform/kubernetes/issues/168

,Kubernetes(因此Kubernetes-Mesos)对这些资源并没有真正做任何事情。

一旦在Kubernetes中实现了这一点,Kubernetes-Mesos框架也将支持它:https://github.com/mesosphere/kubernetes-mesos/issues/76

答案 1 :(得分:1)

您可以输入内存和值的值。容器规格中的CPU:https://github.com/GoogleCloudPlatform/kubernetes/blob/master/pkg/api/v1beta1/types.go#L257

我们的调度程序尚未对它们做很多事情,但它也不会完全忽略它们。

答案 2 :(得分:0)

您可以正式在Pod中的每个容器定义中添加一个资源字段,还可以添加请求和限制:

resources:
  requests:
    memory: "qMi"
    cpu: "pm"
  limits:
    memory: "yMi"
    cpu: "x"

然后将这些值的总和与容器中的其他容器相加,以计算每个容器的总请求数和限制。

请看一看 https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/

答案 3 :(得分:0)

您可以在容器规范中为部署文件本身中的任何容器指定cpu或资源。

nano task2deploy1.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: task2deploy1
spec:
  replicas: 1
  template:
    metadata:
     labels:
       app: task2deploy1
     spec:
  containers:
  - name: task2deploy1
    image: nginx
    ports:
    - containerPort: 80
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"

这意味着可以将64Mi内存和250m cpu的请求发送到名为task2deploy1的容器。

尽管该容器具有128Mi内存和500m cpu的限制。

kubectl创建–f task2deploy1.yaml –namespace = Shifali

在此部署的帮助下创建Pod后,pod将具有部署文件中提到的这些资源。

kubectl描述了pod task2deploy1-765cfc9b89-xrgsr --namespace = Shifali

Name:           task2deploy1-765cfc9b89-xrgsr

Limits:

  cpu:     500m
  memory:  128Mi

Requests:
  cpu:        250m
  memory:     64Mi

将显示更多信息,但需要查看的是资源。