如何更改 Kubernetes 中的 运行 pods 限制?

How to change running pods limits in Kubernetes?

我有一个由虚拟机组成的自制 Kubernetes 集群。我的问题是,coredns pods 总是进入 CrashLoopBackOff 状态,过了一会儿他们又回到 运行 状态,因为什么都没发生。我找到但还不能尝试的一个解决方案正在改变默认内存限制从 170Mi 到更高。由于我不是这方面的专家,我认为这不是一件难事,但我不知道如何更改 运行 pod 的配置。这可能是不可能的,但必须有一种方法可以用新的配置重新创建它们。我尝试使用 kubectl 补丁,也查找了滚动更新,但我就是想不通。如何更改限制?

这里是 pod 数据的相关部分:

apiVersion: v1
kind: Pod
metadata:
  annotations:
    cni.projectcalico.org/podIP: 176.16.0.12/32
  creationTimestamp: 2018-11-18T10:29:53Z
  generateName: coredns-78fcdf6894-
  labels:
    k8s-app: kube-dns
    pod-template-hash: "3497892450"
  name: coredns-78fcdf6894-gnlqw
  namespace: kube-system
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: coredns-78fcdf6894
    uid: e3349719-eb1c-11e8-9000-080027bbdf83
  resourceVersion: "73564"
  selfLink: /api/v1/namespaces/kube-system/pods/coredns-78fcdf6894-gnlqw
  uid: e34930db-eb1c-11e8-9000-080027bbdf83
spec:
  containers:
  - args:
    - -conf
    - /etc/coredns/Corefile
  image: k8s.gcr.io/coredns:1.1.3
  imagePullPolicy: IfNotPresent
  livenessProbe:
    failureThreshold: 5
    httpGet:
      path: /health
      port: 8080
      scheme: HTTP
    initialDelaySeconds: 60
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 5
  name: coredns
  ports:
  - containerPort: 53
    name: dns
    protocol: UDP
  - containerPort: 53
    name: dns-tcp
    protocol: TCP
  - containerPort: 9153
    name: metrics
    protocol: TCP
  resources:
    limits:
      memory: 170Mi
    requests:
      cpu: 100m
      memory: 70Mi

编辑: 事实证明,在 Ubuntu 中,网络管理员的 dnsmasq 使 Corends pods 发疯,所以在 /etc/NetworkManager/NetworkManager.conf 中,我注释掉了 dnsmasq 行,重新启动,一切正常。

您必须在 coredns 部署定义中编辑 coredns pod 的模板:

kubectl edit deployment -n kube-system coredns

使用 coredns 部署打开默认编辑器后,您将在 templateSpec 中找到负责设置内存和 cpu 限制的部分。