有什么方法可以防止 k8s pod eviction?

Any*_*One 5 docker google-cloud-platform kubernetes google-kubernetes-engine

我有一组需要运行的守护进程,一般来说,它们不会消耗太多内存或 CPU,而且我有它们的limitstocpu: 150mmemory: 150m.

有时,它们会飙升至比这更高的水平,这似乎会导致驱逐和节点不稳定。

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

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

ser*_*inc 6

从 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."
Run Code Online (Sandbox Code Playgroud)
  1. 在 Pod 中设置优先级
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  priorityClassName: high-priority
Run Code Online (Sandbox Code Playgroud)


the*_*o_r 2

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

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

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