跳转到文档内容
版本:Next

组件优先级类配置

优先级类是一种用于为 Pod 定义优先级的资源。它能让调度系统根据不同 Pod 的重要性来做出调度决策。与高优先级类关联的 Pod 会比低优先级类的 Pod 优先被调度。

这一机制在资源受限的环境中尤为重要,因为它有助于确保关键组件先获得必要的资源。

在 Karmada 系统中,你可以自定义 Karmada 控制平面组件的优先级类。借助此功能,你可以:

  • 为 Karmada 控制平面组件配置优先级类,以确保关键组件能可靠调度,从而保证系统的稳定性和可靠性。
  • 使用符合组织策略的自定义优先级类覆盖 Karmada 控制平面组件的默认优先级类,确保跨工作负载的资源分配可靠以及系统稳定。

如何为 Karmada 控制平面组件配置优先级类

Karmada 提供了多种安装方式,包括使用 karmada-operator、Helm 和 karmadactl。以下步骤展示了如何在不同安装方式下为 Karmada 控制平面组件配置优先级类。

使用 karmada-operator

若要使用 karmada-operator 为 Karmada 控制平面组件配置优先级类,你可以在 Karmada 自定义资源(CR)中为目标组件设置 priorityClassName 字段。若未指定,默认值为 system-node-critical

apiVersion: operator.karmada.io/v1alpha1
kind: Karmada
metadata:
name: foo
namespace: foo
spec:
components:
etcd:
local:
priorityClassName: system-cluster-critical
karmadaAPIServer:
priorityClassName: system-cluster-critical
## 为简洁起见,省略其他组件...

使用 Helm

若要使用 Helm 为 Karmada 控制平面组件配置优先级类,你可以在 values.yaml 文件中为每个组件设置 priorityClassName 字段。若未指定,默认值为 system-node-critical

##  Webhook 配置
webhook:
## @param webhook.labels Webhook 部署的标签
labels:
app: karmada-webhook
## @param webhook.replicaCount 目标副本数
replicaCount: 1
## @param webhook.priorityClassName karmada - webhook 的优先级类名称
priorityClassName: "system-cluster-critical"

## 为简洁起见,省略其他组件...

或者,你可以在执行 helm install 时使用 --set 参数为目标组件设置优先级类名称,例如:

$ helm install karamda -n karmada-system --create-namespace --dependency-update ./charts/karmada --set apiServer.priorityClassName=system-cluster-critical

上述命令将 karmada-apiserver 组件的优先级类名称设置为 system-cluster-critical,其他组件也可以用类似方式进行配置。

使用 karmadactl

karmadactl 提供了 init 命令来安装控制平面组件,以及 addons 命令来安装诸如 karmada-descheduler 之类的插件。这两个命令都支持使用特定参数为目标组件设置优先级类名称。

karmadactl init

$ karmadactl init --help | grep priority
--etcd-priority-class='system-node-critical':
etcd 组件的优先级类名称。
--karmada-aggregated-apiserver-priority-class='system-node-critical':
karmada-aggregated-apiserver 组件的优先级类名称。
--karmada-apiserver-priority-class='system-node-critical':
karmada-apiserver 组件的优先级类名称。
--karmada-controller-manager-priority-class='system-node-critical':
karmada-controller-manager 组件的优先级类名称。
--karmada-kube-controller-manager-priority-class='system-node-critical':
karmada-kube-controller-manager 组件的优先级类名称。
--karmada-scheduler-priority-class='system-node-critical':
karmada-scheduler 组件的优先级类名称。
--karmada-webhook-priority-class='system-node-critical':
karmada-webhook 组件的优先级类名称。

通过上述参数,你可以在安装过程中为每个组件设置优先级类名称。

karmadactl addons

$ karmadactl addons enable --help |grep priority
--descheduler-priority-class='system-node-critical':
karmada-descheduler 组件的优先级类名称。
--estimator-priority-class='system-node-critical':
karmada-scheduler-estimator 组件的优先级类名称。
--metrics-adapter-priority-class='system-node-critical':
karmada-metrics-adaptor 组件的优先级类名称。
--search-priority-class='system-node-critical':
karmada-search 组件的优先级类名称。

通过上述参数,你可以在安装过程中为目标插件设置优先级类名称。