安装

将 Kueue 安装到 Kubernetes 集群

开始之前

确保满足以下条件:

  • 运行版本为 1.29 或更新的 Kubernetes 集群。了解如何安装 Kubernetes 工具
  • 启用了 SuspendJob 特性。在 Kubernetes 1.22 或更新版本中,该特性默认启用。
  • (可选)启用了 JobMutableNodeSchedulingDirectives 特性(在 Kubernetes 1.22 或更新版本中可用)。 在 Kubernetes 1.23 或更新版本中,该特性默认启用。
  • kubectl 命令行工具已与你的集群通信。

Kueue 发布指标以监控其控制器组件。 你可以使用 Prometheus 采集这些指标。 如果你没有自己的监控系统,请使用 kube-prometheus

Kueue 中的 Webhook 服务使用内部证书管理来配置证书。如果你想使用第三方证书,例如 cert-manager,请遵循证书管理指南

安装正式版本

通过 kubectl 安装

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

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

要等待 Kueue 完全可用,请运行:

kubectl wait deploy/kueue-controller-manager -nkueue-system --for=condition=available --timeout=5m

通过 Helm 安装

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

helm install kueue oci://registry.k8s.io/kueue/charts/kueue \
  --version=0.12.3 \
  --namespace  kueue-system \
  --create-namespace \
  --wait --timeout 300s

你还可以使用以下命令:

helm install kueue https://github.com/kubernetes-sigs/kueue/releases/download/v0.12.3/kueue-chart-v0.12.3.tgz \
  --namespace kueue-system \
  --create-namespace \
  --wait --timeout 300s

为 Prometheus-Operator 添加指标采集

要允许 prometheus-operator 从 Kueue 组件中采集指标,请运行以下命令:

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

为可见性 API 添加 API 优先级和公平性配置

有关更多详细信息,请参阅配置 API 优先级和公平性

卸载

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

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

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

helm uninstall kueue --namespace kueue-system

安装自定义配置的正式版本

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

  1. 下载发布的 manifests.yaml 文件:
wget https://github.com/kubernetes-sigs/kueue/releases/download/v0.12.3/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: :8443
      # 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 并将其安装在你的集群中,请运行以下命令:

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

Alpha 和 Beta 级别特性的特性门控

功能默认值阶段起始版本截止版本
FlavorFungibilitytrueBeta0.5
MultiKueuefalseAlpha0.60.8
MultiKueuetrueBeta0.9
MultiKueueBatchJobWithManagedByfalseAlpha0.8
PartialAdmissionfalseAlpha0.40.4
PartialAdmissiontrueBeta0.5
ProvisioningACCfalseAlpha0.50.6
ProvisioningACCtrueBeta0.7
QueueVisibilityfalseAlpha0.50.9
VisibilityOnDemandfalseAlpha0.60.8
VisibilityOnDemandtrueBeta0.9
PrioritySortingWithinCohorttrueBeta0.6
LendingLimitfalseAlpha0.60.8
LendingLimittrueBeta0.9
MultiplePreemptionsfalseAlpha0.80.8
MultiplePreemptionstrueBeta0.90.9
TopologyAwareSchedulingfalseAlpha0.9
ConfigurableResourceTransformationsfalseAlpha0.90.9
ConfigurableResourceTransformationstrueBeta0.10
WorkloadResourceRequestsSummaryfalseAlpha0.90.9
WorkloadResourceRequestsSummarytrueBeta0.100.10
ManagedJobsNamespaceSelectortrueBeta0.10
LocalQueueDefaultingfalseAlpha0.100.11
LocalQueueDefaultingtrueBeta0.12
LocalQueueMetricsfalseAlpha0.10
HierarchicalCohorttrueBeta0.11
ObjectRetentionPoliciesfalseAlpha0.12
TASFailedNodeReplacementfalseAlpha0.12
AdmissionFairSharingfalseAlpha0.12

已毕业或已弃用特性的特性门控

功能默认值阶段起始版本截止版本
QueueVisibilityfalseAlpha0.40.9
QueueVisibilityfalseDeprecated0.9
MultiplePreemptionsfalseAlpha0.80.8
MultiplePreemptionstrueBeta0.90.9
MultiplePreemptionstrueGA0.10
WorkloadResourceRequestsSummaryfalseAlpha0.90.10
WorkloadResourceRequestsSummarytrueBeta0.100.11
WorkloadResourceRequestsSummarytrueGA0.11
TASProfileMostFreeCapacityfalseDeprecated0.110.13
TASProfileLeastFreeCapacityfalseDeprecated0.11
TASProfileMixedfalseDeprecated0.11

接下来是什么