将内存资源分配给正在运行的Pod?

时间:2020-11-09 09:54:15

标签: kubernetes kubernetes-pod

我想知道如何为正在运行的Pod分配内存资源?

我尝试了kubectl get po foo-7d7dbb4fcd-82xfr -o yaml > pod.yaml 但是当我运行命令kubectl apply -f pod.yaml

 The Pod "foo-7d7dbb4fcd-82xfr" is invalid: spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`, `spec.initContainers[*].image`, `spec.activeDeadlineSeconds` or `spec.tolerations` (only additions to existing tolerations)

在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

Pod是最小的kubernetes资源,它不支持您想做的编辑。

我建议您使用deployment来运行您的Pod,因为它是“ pod管理器”,其中具有许多其他功能,例如Pod自我修复,Pod活动性/就绪性等。 / p>

您可以像这样在部署文件中定义资源:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: echo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: echo
  template:
    metadata:
      labels:
        app: echo
    spec:
      containers:
      - name: echo
        image: mendhak/http-https-echo
        resources:
          limits:
            cpu: 15m
            memory: 100Mi
          requests:
            cpu: 15m
            memory: 100Mi 
        ports:
        - name: http
          containerPort: 80

答案 1 :(得分:0)

如@KoopaKiller所述,您无法更新spec.containers.resources字段,Container对象规范中对此进行了提及:

计算此容器所需的资源。无法更新。

相反,您可以使用Deployment对象部署Pod。在这种情况下,如果您更改Pod的资源配置,则部署控制器将推出Pod的更新版本。