【K8s任务】关键插件 Pod 的调度保证

参考:
https://kubernetes.io/zh/docs/tasks/administer-cluster/guaranteed-scheduling-critical-addon-pods/
https://kubernetes.io/zh/docs/concepts/scheduling-eviction/pod-priority-preemption/

除了在主机上运行的 Kubernetes 核心组件(如 api-server 、scheduler 、controller-manager,使用 system-node-critical 级别优先级)之外,还有许多插件,由于各种原因, 必须在常规集群节点(而不是 Kubernetes 主节点)上运行。 其中一些插件对于功能完备的群集至关重要,例如 Heapster、DNS 和 UI(使用 system-cluster-critical 级别优先级)。 如果关键插件被逐出(手动或作为升级等其他操作的副作用)或者变成挂起状态,群集可能会停止正常工作。 关键插件进入挂起状态的例子有:集群利用率过高;被逐出的关键插件 Pod 释放了空间,但该空间被之前悬决的 Pod 占用;由于其它原因导致节点上可用资源的总量发生变化。

标记关键 Pod

要将 pod 标记为关键性(critical),pod 必须在 kube-system 命名空间中运行(可通过参数配置)。 同时,需要将 priorityClassName 设置为 system-cluster-critical 或 system-node-critical ,后者是整个群集的最高级别。 或者,也可以为 Pod 添加名为 scheduler.alpha.kubernetes.io/critical-pod、值为空字符串的注解。 不过,这一注解从 1.13 版本开始不再推荐使用,并将在 1.14 中删除。

以下只是一个使用示例:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  priorityClassName: system-cluster-critical
posted @ 2021-07-31 10:40  Varden  阅读(214)  评论(0编辑  收藏  举报