安装

将 Kueue 安装到 Kubernetes 集群

开始之前

确保满足以下条件:

  • 运行版本为 1.29 或更新的 Kubernetes 集群。了解如何安装 Kubernetes 工具。
  • 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.18.10/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.18.10 \
  --namespace  kueue-system \
  --create-namespace \
  --wait --timeout 300s

你还可以使用以下命令:

helm install kueue https://github.com/kubernetes-sigs/kueue/releases/download/v0.18.10/kueue-0.18.10.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.18.10/prometheus.yaml

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

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

升级策略

升级 Kueue 时,请查看以下发布说明:

  • 次版本发布: 升级过程中跨越的每个新次版本的 .0 发布说明。
  • 补丁发布: 目标次版本线中直到并包括目标版本的补丁发布说明。

注意: 你不需要查看先前次版本的补丁发布说明,因为这些变更已包含在下一个 .0 发布说明中。

例如:

从 v0.16.1 升级到 v0.18.10 时,请查看 v0.17.0、v0.18.0、v0.18.1、v0.18.2、v0.18.3、v0.18.4、v0.18.5、v0.18.6、v0.18.7、v0.18.8、v0.18.9 和 v0.18.10 的升级说明。

从 v0.16.1 升级到 v0.17.8 时,请查看 v0.17.0、v0.17.1、v0.17.2、v0.17.3、v0.17.4、v0.17.5、v0.17.6、v0.17.7 和 v0.17.8 的升级说明。

卸载

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

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

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

helm uninstall kueue --namespace kueue-system

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

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

  1. 下载发布的 manifests.yaml 文件:
wget https://github.com/kubernetes-sigs/kueue/releases/download/v0.18.10/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/v1beta2
    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:
      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 级别特性的特性门控

FeatureDefaultStageSinceUntil
AdmissionFairSharingfalseAlpha0.120.15
AdmissionFairSharingtrueBeta0.15—
AdmissionGatedByfalseAlpha0.170.19
AdmissionGatedBytrueBeta0.19—
AssignQueueLabelsForPodstrueBeta0.17—
CleanupProvisioningRequestsOnEvictiontrueBeta0.19—
ConcurrentAdmissionfalseAlpha0.18—
CustomMetricLabelsfalseAlpha0.17—
DeferRayServiceFinalizationForRedisCleanuptrueBeta0.19—
DisableWaitForPodsReadyfalseAlpha0.19—
ElasticJobsViaWorkloadSlicesfalseAlpha0.130.18
ElasticJobsViaWorkloadSlicestrueBeta0.18—
ElasticJobsViaWorkloadSlicesWithTASfalseAlpha0.17—
FailureRecoveryPolicyfalseAlpha0.15—
FairSharingPreemptWithinNominaltrueBeta0.17—
FairSharingPrioritizeNonBorrowingtrueBeta0.17—
FastQuotaReleaseInPodIntegrationfalseAlpha0.17—
FinishOrphanedWorkloadstrueBeta0.18—
FlavorFungibilitytrueBeta0.5—
HierarchicalCohortstrueBeta0.110.17
KueueDRAIntegrationtrueBeta0.18—
KueueDRAIntegrationConsumableCapacityfalseAlpha0.19—
KueueDRAIntegrationExtendedResourcefalseAlpha0.180.19
KueueDRAIntegrationExtendedResourcetrueBeta0.19—
KueueDRAIntegrationPartitionableDevicesfalseAlpha0.180.19
KueueDRAIntegrationPartitionableDevicestrueBeta0.19—
KueueDRARejectWorkloadsWhenDRADisabledtrueBeta0.18—
LocalQueueMetricsfalseAlpha0.100.17
LocalQueueMetricstrueBeta0.17—
ManagedJobsNamespaceSelectorAlwaysRespectedfalseAlpha0.130.15
ManagedJobsNamespaceSelectorAlwaysRespectedtrueBeta0.150.19
MetricForWorkloadCreationLatencytrueBeta0.18—
MetricsForCohortstrueBeta0.18—
MultiKueuefalseAlpha0.60.9
MultiKueuetrueBeta0.9—
MultiKueueAdaptersForCustomJobsfalseAlpha0.140.15
MultiKueueAdaptersForCustomJobstrueBeta0.15—
MultiKueueAllowInsecureKubeconfigsfalseAlpha0.150.17
MultiKueueClusterProfilefalseAlpha0.15—
MultiKueueIncrementalDispatcherConfigtrueBeta0.19—
MultiKueueIncrementalDispatcherRespectConfigOrdertrueBeta0.19—
MultiKueueKubeConfigPathValidationfalseAlpha0.19—
MultiKueueManagerQuotaAutomationfalseAlpha0.18—
MultiKueueOrchestratedPreemptionfalseAlpha0.17—
MultiKueueRedoAdmissionOnEvictionInWorkertrueBeta0.160.18
MultiKueueWaitForWorkloadAdmittedtrueBeta0.160.18
ObjectRetentionPoliciesfalseAlpha0.120.13
ObjectRetentionPoliciestrueBeta0.130.17
PartialAdmissionfalseAlpha0.40.5
PartialAdmissiontrueBeta0.5—
PodIntegrationValidateGroupOwnertrueBeta0.20—
PriorityBoostfalseAlpha0.17—
PrioritySortingWithinCohorttrueBeta0.6—
PropagateBatchJobLabelsToWorkloadtrueBeta0.150.17
QuotaCheckStrategyfalseAlpha0.180.19
QuotaCheckStrategytrueBeta0.19—
ReclaimablePodstrueBeta0.15—
RejectUpdatesToCQWithInvalidOnFlavorsfalseAlpha0.18—
RemoveFinalizersWithStrictPatchtrueBeta0.17—
SchedulerLibraryIntegrationfalseAlpha0.19—
SchedulerLongRequeueIntervalfalseAlpha0.17—
SchedulerTimestampPreemptionBufferfalseAlpha0.17—
SchedulingEquivalenceHashingfalseBeta0.170.18
SchedulingEquivalenceHashingtrueBeta0.18—
ShortWorkloadNamesfalseAlpha0.17—
SkipFinalizersForPodsSuspendedByParenttrueBeta0.160.18
SkipReassignmentForPodOwnedWorkloadstrueBeta0.19—
SparkApplicationIntegrationfalseAlpha0.17—
TASAssignmentsEncodingByHostnamePrefixtrueBeta0.19—
TASBalancedPlacementfalseAlpha0.15—
TASCacheNodeMatchResultstrueBeta0.19—
TASCachingRemainingResourcestrueBeta0.19—
TASFailedNodeReplacementfalseAlpha0.120.14
TASFailedNodeReplacementtrueBeta0.14—
TASFailedNodeReplacementFailFastfalseAlpha0.130.14
TASFailedNodeReplacementFailFasttrueBeta0.14—
TASHandleOverlappingFlavorstrueBeta0.18—
TASMultiLayerTopologyfalseAlpha0.170.19
TASMultiLayerTopologytrueBeta0.19—
TASProfileMixedfalseAlpha0.100.15
TASProfileMixedtrueBeta0.15—
TASRecomputeAssignmentWithinSchedulingCycletrueBeta0.19—
TASReplaceNodeDueToNotReadyOverFixedTimetrueBeta0.170.19
TASReplaceNodeOnNodeTaintstrueBeta0.17—
TASReplaceNodeOnPodTerminationfalseAlpha0.130.14
TASReplaceNodeOnPodTerminationtrueBeta0.14—
TASRespectNodeAffinityPreferredfalseAlpha0.18—
TLSOptionstrueBeta0.16—
TopologyAwareSchedulingfalseAlpha0.90.14
TopologyAwareSchedulingtrueBeta0.14—
UnadmittedWorkloadsExplicitStatusfalseBeta0.19—
UnadmittedWorkloadsObservabilityfalseBeta0.19—
VectorizedResourceRequeststrueBeta0.19—
VisibilityOnDemandfalseAlpha0.60.9
VisibilityOnDemandtrueBeta0.9—
WorkloadIdentifierAnnotationstrueBeta0.18—
WorkloadPriorityClassDefaultingfalseAlpha0.18—
WorkloadRequestUseMergePatchfalseAlpha0.14—

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

FeatureDefaultStageSinceUntil
HierarchicalCohortstrueGA0.17—
ManagedJobsNamespaceSelectorAlwaysRespectedtrueGA0.19—
MultiKueueAllowInsecureKubeconfigsfalseDeprecated0.170.19
MultiKueueAllowInsecureKubeconfigsfalseDeprecated0.19—
MultiKueueRedoAdmissionOnEvictionInWorkertrueGA0.18—
MultiKueueWaitForWorkloadAdmittedtrueGA0.18—
ObjectRetentionPoliciestrueGA0.17—
PropagateBatchJobLabelsToWorkloadtrueGA0.17—
SkipFinalizersForPodsSuspendedByParenttrueGA0.18—
TASReplaceNodeDueToNotReadyOverFixedTimefalseDeprecated0.19—

接下来是什么