有什么方法可以防止 k8s pod 被驱逐吗?



我需要运行一组守护进程,通常,它们不会消耗太多内存或CPU,我有它们的limitscpu: 150mmemory: 150m

有时它们会飙升到比这高得多的地方,这似乎会导致驱逐和不稳定的节点。

守护进程保持 24/7 全天候运行至关重要,即使它们在峰值时受到 CPU 和/或内存的限制。是否有可能防止他们被驱逐并限制他们的资源?

据我了解,CPU 使用率受到限制,但内存过度使用会导致 OOM 逐出,有什么方法可以防止这种逐出吗?

从 1.11 开始,您可以设置 Pod 优先级。

  1. 创建优先级类
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: high-priority
value: 1000000
globalDefault: false
description: "This priority class should be used for XYZ service pods only."
  1. 在 pod 中设置优先级
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
priorityClassName: high-priority

听起来你需要用Prometheus + Grafana之类的东西来跟踪资源消耗趋势,以检查你期望从DaemonSets中获得什么样的峰值。

然后,您可以为这些 Pod 分配更多资源或删除此配置(默认情况下,这会使它们处于unbounded模式(。但是,当然,您不想冒全节点/主机崩溃的风险,因此您可以考虑调整eviction threshold: https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/#eviction-thresholds

更多详情: https://kubernetes-v1-4.github.io/docs/admin/limitrange/

最新更新