Critical-Pod的使用

除了 Kubernetes 核心组件 apiserver、scheduler、controller-manager 之外,还有很多插件必须运行在一个普通的集群节点上。这些插件对于一个功能完备的集群来说是非常关键的,例如 Heapster、DNS 以及 Dashboard 等等。 如果一个关键的插件被移除(类似升级这样具有副作用的其它操作)、或者变成挂起状态(例如当集群利用率过高,或者由于其它原因导致节点上可用资源的总量发生变化)、集群可能会停止正常工作。

为了保证核心组件的运行优先级最大化,就需要用到 CriticalPod,即标记为关键插件,这样就可以保证关键插件的最优先调度,标记为关键插件的方法如下:

  • 1.需要在 apiserver 参数中启用 ExperimentalCriticaPodAnnotation这个 Feature Gate
  • 2.Pod 必须隶属于kube-system 这个 namespace
  • 3.必须加上 scheduler.alpha.kubernetes.io/critical-pod="" 这个 Annotation