如何修改正在运行的Pod的Pod内存限制

时间:2018-08-16 16:35:23

标签: docker kubernetes openshift

我正在使用YML创建pod并指定了资源请求和限制。现在,我不知道如何修改正在运行的Pod的资源限制。例如

memory-demo.yml

apiVersion: v1
kind: Pod
metadata:
  name: memory-demo
  namespace: mem-example
spec:
  containers:
  - name: memory-demo-ctr
    image: polinux/stress
    resources:
      limits:
        memory: "200Mi"
      requests:
        memory: "100Mi"
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]

然后我运行命令oc create -f memory-demo.yml,并创建一个pod名称memory-demo。

我的问题是我该怎么做才能从200Mi --> 600 Mi修改内存限制,是否需要删除现有的pod并使用修改后的YML文件重新创建pod?

我是一个新手。需要帮助。

2 个答案:

答案 0 :(得分:2)

首先,对于大多数情况,您真的不太可能直接创建(重新)Pods。探究Deployment是什么以及它如何工作。然后,您可以简单地将更改应用于部署中的规范模板,并且kubernetes将在免提滚动更新中升级该部署中的所有Pod以匹配新的规范。

确实可以对正在运行的容器进行内存限制的实时更改,但不能通过kubernetes进行更改(如果这样做,则不会反映在kube状态中)。看docker update

答案 1 :(得分:1)

您可以使用replace命令基于指定配置文件(documentation)的内容来修改现有对象

oc replace -f memory-demo.yml

编辑:但是,某些规格无法更新。唯一的方法是删除并重新创建容器。