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

时间:2018-07-02 14:10:41

标签: docker kubernetes google-cloud-platform google-kubernetes-engine

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

有时候它们的峰值会比这个高很多,这似乎导致逐出和不稳定的节点。

至关重要的是,即使守护程序在峰值时受到CPU和/或内存的限制,它们也必须保持24/7运行。是否有可能阻止他们迁离并限制他们的资源?

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

2 个答案:

答案 0 :(得分:1)

像您这样的声音需要使用Prometheus + Grafana之类的东西来跟踪资源消耗趋势,以检查您希望从DaemonSets获得什么样的峰值。

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

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

答案 1 :(得分:1)

从1.11开始,您可以设置pod priorities

  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. 在广告连播中设置优先级
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  priorityClassName: high-priority