Kubernetes 在kuberenetes中设置吊舱的最大使用寿命条件
我们的容器存在一些奇怪的内存泄漏问题,它们使用的时间越长,占用的资源就越多。我们目前没有资源调查这些问题(因为它们在一个多月内不会成为问题),但希望避免人工“清理”臃肿的容器 我想做的是以这样一种方式配置我们的部署,“生存时间”是pod状态的一个参数,如果它超过一个值(比如说几天),pod将被关闭并创建一个新的pod。我更愿意完全在kubernetes内完成这项工作,因为虽然我们最终将在我们的服务中添加一个“健康检查”端点,但这在一段时间内无法完成Kubernetes 在kuberenetes中设置吊舱的最大使用寿命条件,kubernetes,kubernetes-pod,Kubernetes,Kubernetes Pod,我们的容器存在一些奇怪的内存泄漏问题,它们使用的时间越长,占用的资源就越多。我们目前没有资源调查这些问题(因为它们在一个多月内不会成为问题),但希望避免人工“清理”臃肿的容器 我想做的是以这样一种方式配置我们的部署,“生存时间”是pod状态的一个参数,如果它超过一个值(比如说几天),pod将被关闭并创建一个新的pod。我更愿意完全在kubernetes内完成这项工作,因为虽然我们最终将在我们的服务中添加一个“健康检查”端点,但这在一段时间内无法完成 对豆荚的健康状况实施这种“最大年龄”参数的最佳
对豆荚的健康状况实施这种“最大年龄”参数的最佳方法是什么?或者,我想我们可以根据资源使用情况触发,但如果使用是临时的,这不是问题,只有在短时间内不释放资源的情况下才可以使用。最简单的方法是在内存上设置一个硬资源限制,该限制高于在临时峰值中看到的限制:达到预期的水平,比如说几周 无论如何,这样做可能是个好主意,因为k8s将根据请求的资源而不是它们的限制来安排工作负载,因此随着内存使用量的增加,节点中的内存压力可能会增加
一个问题是,如果你有显著的记忆尖峰,在K8S杀死你的POD的POD重启可能发生在一些工作负荷的中间,所以你需要能够吸收这种影响。 因此,从它看起来是这样的(显然
部署
比原始的Pod
更可取,如下所示,这个示例可以被带入PodTemplateSpec
):
最简单的方法是在内存上设置一个硬资源限制,这个限制要高于你在一个临时峰值中看到的水平:在一个水平上,你可以预期在几周内看到 无论如何,这样做可能是个好主意,因为k8s将根据请求的资源而不是它们的限制来安排工作负载,因此随着内存使用量的增加,节点中的内存压力可能会增加
一个问题是,如果你有显著的记忆尖峰,在K8S杀死你的POD的POD重启可能发生在一些工作负荷的中间,所以你需要能够吸收这种影响。 因此,从它看起来是这样的(显然
部署
比原始的Pod
更可取,如下所示,这个示例可以被带入PodTemplateSpec
):
如果这是在部署级别构建的,我相信它将避免“在峰值期间杀死”的问题。部署的规格将是所需状态,这意味着当pod超出所需状态(内存太多)时,它将被标记为处于不良状态,新pod将启动,并且在新pod准备就绪之前,旧pod无法被杀死(假定您操作的活动pod不超过所需状态)如果这是在部署级别构建的,我相信它将避免“在峰值期间杀死”的问题。部署的规格将是所需状态,这意味着当pod超出所需状态(内存太多)时,它将被标记为处于不良状态,新pod将启动,并且在新pod准备就绪之前,旧pod无法被杀死(假定您操作的活动pod不超过所需状态)
apiVersion: v1
kind: Pod
metadata:
name: frontend
spec:
containers:
- name: ccccc
image: theimage
resources:
requests:
memory: "64Mi"
limits:
memory: "128Mi"