如何更改 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 限制的部分。
我有一个由虚拟机组成的自制 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 限制的部分。