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

     2023-03-17     273

关键词:

【中文标题】如何在 Kubernetes 中的容器上指定 cpu 或内存资源【英文标题】:How do you specify cpu or memory resource on container in kurbenetes 【发布时间】:2015-01-15 01:35:35 【问题描述】:

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"
   

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

【问题讨论】:

【参考方案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

【讨论】:

【参考方案2】:

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

我们的调度程序还没有对它们做太多事情,但它也不会再完全忽略它们。

【讨论】:

【参考方案3】:

官方可以在你的pod中的每个容器定义中添加一个resource字段,可以添加requests和limits:

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

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

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

【讨论】:

【参考方案4】:

您可以在容器规范中的部署文件本身中为任何容器指定 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 create –f task2deploy1.yaml –namespace=Shifali

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

 kubectl describe pod task2deploy1-765cfc9b89-xrgsr --namespace=Shifali

Name:           task2deploy1-765cfc9b89-xrgsr

Limits:

  cpu:     500m
  memory:  128Mi

Requests:
  cpu:        250m
  memory:     64Mi

除此之外,还会显示更多信息,但需要查看的是资源。

【讨论】:

如何使用 kubernetes 将数据从一个容器 cp 到另一个容器

】如何使用kubernetes将数据从一个容器cp到另一个容器【英文标题】:Howtocpdatafromonecontainertoanotherusingkubernetes【发布时间】:2019-11-1314:25:10【问题描述】:假设我们有一个简单的deployment.yml文件:apiVersion:apps/v1kind:Deploymentmetadata:name... 查看详情

如何让容器在 Kubernetes 上运行?

】如何让容器在Kubernetes上运行?【英文标题】:HowcanIkeepacontainerrunningonKubernetes?【发布时间】:2015-10-3010:55:40【问题描述】:我现在正尝试在Kubernetes集群上运行一个带有shell(/bin/bash)的简单容器。我认为有一种方法可以通过使用p... 查看详情

kubernetescpu管理及调度

参考技术A在内存管理篇,我们研究了Kubernetes(K8s)requests和limits的资源含义,以及Docker容器运行时的内存含义。我们在这里将介绍K8中的CPU的含义,以及CPU的requests和limits,并研究如何为Pod设置合理的cpu资源。那么,CPU在kubernetes... 查看详情

Kubernetes:如何从 Docker 容器 A 在 Docker 容器 B 上运行 Bash 命令

】Kubernetes:如何从Docker容器A在Docker容器B上运行Bash命令【英文标题】:Kubernetes:HowtorunaBashcommandonDockercontainerBfromDockercontainerA【发布时间】:2016-11-2622:58:41【问题描述】:我已经基于Docker-Multinode搭建了一个简单的Kubernetes测试环境... 查看详情

为啥 Kubernetes 的容器在 runsc (gVisor) 上作为 Docker 中的运行时运行时会失败?

】为啥Kubernetes的容器在runsc(gVisor)上作为Docker中的运行时运行时会失败?【英文标题】:WhydoKubernetes\'containersfailwhenranonrunsc(gVisor)asaruntimeinDocker?为什么Kubernetes的容器在runsc(gVisor)上作为Docker中的运行时运行时会失败?【发布时间... 查看详情

如何通过 SSH 连接到 Kubernetes 集群中的 docker 容器? [关闭]

】如何通过SSH连接到Kubernetes集群中的docker容器?[关闭]【英文标题】:HowtoSSHtodockercontainerinkubernetescluster?[closed]【发布时间】:2016-11-2322:57:20【问题描述】:我对GoogleCloud平台和Docker还很陌生,我设置了一个节点集群,制作了一... 查看详情

kubernetes中的资源分配和限制策略

参考技术AKubernetes是一个容器集群管理平台,Kubernetes需要统计整体平台的资源使用情况,合理地将资源分配给容器使用,并且要保证容器生命周期内有足够的资源来保证其运行。同时,如果资源发放是独占的,即资源已发放给了... 查看详情

如何在kubernetes上部署安装php+nginx多容器应用(代码片段)

引言Kubernetes是一个开源的容器编排系统。它允许你创建、更新和扩展容器,而无需担心停机。要运行一个PHP应用程序,Nginx充当PHP-FPM的代理。将此设置打包到单个容器中可能是一个繁琐的过程,但Kubernetes将帮助在不... 查看详情

指定 Docker 在 Kubernetes pod 上运行的顺序

】指定Docker在Kubernetespod上运行的顺序【英文标题】:SpecifytheorderDockersrunonKubernetespod【发布时间】:2015-02-2609:56:17【问题描述】:我试图在同一个Kubernetespod上运行两个Docker,并且我希望一个Docker容器始终在另一个之前运行。我记... 查看详情

从 docker 容器到 kubernetes pod 的端口发布如何工作?

】从docker容器到kubernetespod的端口发布如何工作?【英文标题】:Howdoesportpublishingfromadockercontainertoakubernetespodwork?【发布时间】:2020-02-0803:22:34【问题描述】:在学习GetStarted,Part3:DeployingtoKubernetes教程时,我偶然发现了清单文件的... 查看详情

如何在kubernetes上部署php应用程序(代码片段)

引言Kubernetes是一个开源的容器编排系统。它允许你创建、更新和扩展容器,而无需担心停机。要运行一个PHP应用程序,Nginx充当PHP-FPM的代理。将此设置打包到单个容器中可能是一个繁琐的过程,但Kubernetes将帮助在不... 查看详情

您如何干净地列出 kubernetes pod 中的所有容器?

】您如何干净地列出kubernetespod中的所有容器?【英文标题】:Howdoyoucleanlylistallthecontainersinakubernetespod?【发布时间】:2016-02-2816:43:38【问题描述】:我希望在运行测试后收集日志的脚本中列出pod中的所有容器。kubectldescribepods-lk8s-... 查看详情

kubernetes(十一)数据存储(挂载卷管理)

...些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下,kubernetes通过Volume实现同... 查看详情

在 Prisma docker 容器上添加健康检查路径

...2019-05-0122:07:27【问题描述】:我将Prismadockercontainer托管在Kubernetes集群上,该集群需要运行状况检查路径来确定容器是否处于活动状态。由于我无法控制此容器中的端点,我将如何添加Kubernetes可能命中的健康检查路由?【 查看详情

kubernetes 在容器中获取端点

】kubernetes在容器中获取端点【英文标题】:kubernetesgetendpintinthecontainers【发布时间】:2021-05-1322:38:23【问题描述】:在kubernetesvm上运行,例如:kubectlgetendpoints如何在pod内获得相同的输出,我应该在pod内运行什么?我知道有一个ku... 查看详情

kubernetes平台上更安全的构建容器镜像工具-kaniko

背景在云原生趋势下,用容器的方式来进行软件产品交付越来越普通,对于云原生的DevOps,它的CICD环境完全运行在容器中,镜像的构建也是在容器中完成的。而我们不仅要考虑如何在容器中成功构建镜像,也需要考虑如何以更... 查看详情

Kubernetes pod 中的 Docker 容器无法通信

】Kubernetespod中的Docker容器无法通信【英文标题】:DockerContainersinKubernetespodnotcommunicating【发布时间】:2018-10-1717:35:24【问题描述】:我有2个docker容器,一个正在运行烧瓶服务器,另一个正在运行Angular应用程序。当我在本地系统... 查看详情

pod详解

什么是pod?官方说明:Pod是Kubernetes应用程序的最基本执行单元—是你创建或部署Kubernetes对象模型中的最小和最简单的单元。Pod表示在集群上运行的进程。Pod封装了应用程序的容器(或者在某些情况下是多个容器)、存储资源... 查看详情