安装

将 Kueue 安装到 Kubernetes 集群

开始之前

确保满足以下条件

  • 正在运行版本为 1.25 或更高版本的 Kubernetes 集群。了解如何 安装 Kubernetes 工具
  • SuspendJob 功能门控 已启用。在 Kubernetes 1.22 或更高版本中,功能门控默认启用。
  • (可选)JobMutableNodeSchedulingDirectives 功能门控(在 Kubernetes 1.22 或更高版本中可用)已启用。在 Kubernetes 1.23 或更高版本中,功能门控默认启用。
  • kubectl 命令行工具已与你的集群建立通信。

Kueue 会发布 指标 来监控其操作员。你可以使用 Prometheus 抓取这些指标。如果你没有自己的监控系统,请使用 kube-prometheus

kueue 中的 webhook 服务器使用内部证书管理来配置证书。如果你想使用第三方证书,例如 cert-manager,请按照以下步骤操作

  1. 配置文件 中将 internalCertManagement.enable 设置为 false
  2. config/default/kustomization.yaml 中注释掉 internalcert 文件夹。
  3. config/default/kustomization.yaml 中启用 cert-manager 并取消注释所有带有“CERTMANAGER”的章节。

安装已发布版本

要在你的集群中安装 Kueue 的已发布版本,请运行以下命令

kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.8.0/manifests.yaml

为 prometheus-operator 添加指标抓取

要允许 prometheus-operator 从 kueue 组件中抓取指标,请运行以下命令

kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.8.0/prometheus.yaml

添加可见性 API 以监控待处理的工作负载

功能状态 Kueue v0.6 起始的 alpha

要添加启用监控待处理工作负载的可见性 API,请更改功能门配置并设置 VisibilityOnDemand=true,然后运行以下命令

kubectl apply --server-side -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.8.0/visibility-api.yaml

有关更多详细信息,请参见可见性 API

卸载

要从集群中卸载已发布版本的 Kueue,请运行以下命令

kubectl delete -f https://github.com/kubernetes-sigs/kueue/releases/download/v0.8.0/manifests.yaml

安装自定义配置的已发布版本

要在集群中安装自定义配置的已发布版本 Kueue,请执行以下步骤

  1. 下载该版本的 manifests.yaml 文件
wget https://github.com/kubernetes-sigs/kueue/releases/download/v0.8.0/manifests.yaml
  1. 使用你喜欢的编辑器,打开 manifests.yaml
  2. kueue-manager-config ConfigMap 清单中,编辑 controller_manager_config.yaml 数据条目。该条目表示默认的 KueueConfiguration。ConfigMap 的内容类似于以下内容
apiVersion: v1
kind: ConfigMap
metadata:
  name: kueue-manager-config
  namespace: kueue-system
data:
  controller_manager_config.yaml: |
    apiVersion: config.kueue.x-k8s.io/v1beta1
    kind: Configuration
    namespace: kueue-system
    health:
      healthProbeBindAddress: :8081
    metrics:
      bindAddress: :8080
      # enableClusterQueueResources: true
    webhook:
      port: 9443
    manageJobsWithoutQueueName: true
    internalCertManagement:
      enable: true
      webhookServiceName: kueue-webhook-service
      webhookSecretName: kueue-webhook-server-cert
    waitForPodsReady:
      enable: true
      timeout: 10m
    integrations:
      frameworks:
      - "batch/job"    

integrations.externalFrameworks 字段在 Kueue v0.7.0 及更高版本中可用。

  1. 将自定义清单应用到集群
kubectl apply --server-side -f manifests.yaml

安装最新开发版本

要在集群中安装 Kueue 的最新开发版本,请运行以下命令

kubectl apply --server-side -k "github.com/kubernetes-sigs/kueue/config/default?ref=main"

控制器在 kueue-system 命名空间中运行。

卸载

要卸载 Kueue,请运行以下命令

kubectl delete -k "github.com/kubernetes-sigs/kueue/config/default?ref=main"

从源代码构建并安装

要从源代码构建 Kueue 并将 Kueue 安装在集群中,请运行以下命令

git clone https://github.com/kubernetes-sigs/kueue.git
cd kueue
IMAGE_REGISTRY=registry.example.com/my-user make image-local-push deploy

为 prometheus-operator 添加指标抓取

要允许 prometheus-operator 从 kueue 组件中抓取指标,请运行以下命令

make prometheus

卸载

要卸载 Kueue,请运行以下命令

make undeploy

通过 Helm 安装

要通过 Helm 安装和配置 Kueue,请按照 说明 操作。

更改功能门控配置

Kueue 使用与 Kubernetes 功能门控 中所述类似的机制来配置功能。

要更改某个功能的默认设置,您需要编辑 kueue 安装命名空间中的 kueue-controller-manager 部署,并将 manager 容器参数更改为包括

--feature-gates=...,<FeatureName>=<true|false>

例如,要启用 PartialAdmission,您应按如下方式更改管理器部署

kind: Deployment
...
spec:
  ...
  template:
    ...
    spec:
      containers:
      - name: manager
        args:
        - --config=/controller_manager_config.yaml
        - --zap-log-level=2
+       - --feature-gates=PartialAdmission=true

当前支持的功能包括

功能默认值阶段
FlavorFungibilitytrueBeta0.5
MultiKueuefalseAlpha0.6
MultiKueueBatchJobWithManagedByfalseAlpha0.8
PartialAdmissionfalseAlpha0.40.4
PartialAdmissiontrueBeta0.5
ProvisioningACCfalseAlpha0.50.6
ProvisioningACCtrueBeta0.7
QueueVisibilityfalseAlpha0.5
VisibilityOnDemandfalseAlpha0.6
PrioritySortingWithinCohorttrueBeta0.6
LendingLimitfalseAlpha0.6
MultiplePreemptionsfalseAlpha0.8

下一步