RATATOSKRATATOSK
ログイン

Volcano

v1.16.0Orchestration & Management
2026年10月14日

ACTION 2CHECK 9OTHER 89

マルチテナントの公平性、トポロジーを考慮したスケジューリング、性能と可観測性、対応プラットフォームの拡張を含む、追加的な変更が中心のリリースです。多くの新しい挙動はデフォルトで有効になるものではありませんが、セキュリティ更新と互換性要件はアップグレード前に確認が必要です。

要対応 (2)

  • security依存ライブラリのセキュリティ更新

    上流のセキュリティアドバイザリに対応するため、Prometheus、golang.org/x/crypto、x/net、x/text が更新されました。間接依存関係では、圧縮ライブラリ、OpenTelemetry、etcd、gRPC、モジュール検証ライブラリなども更新されています。

  • breaking--csi-storageのデフォルト値変更

    --csi-storage のデフォルト値が true になりました。

影響確認 (9)

  • securityDRA 容量集計の過剰反復修正

    DRA capacity accountingを実行している場合に適用されます。

    DRA capacity accounting で、テナントが制御するデバイス数や最小タスク数によって過剰な反復が発生する問題が修正されました。関連するアドバイザリは GHSA-j38h-7pfq-cxmw です。

  • breakingNamespaceQueueの許可 Namespace 制御

    NamespaceQueueを使用している場合に適用されます。

    クラスタ Queue の spec.allowedNamespaces による管理者認可が必要です。省略または空のリストでは NamespaceQueue の紐付けが拒否され、["*"] ではすべての Namespace が許可されます。

  • breakingNamespaceQueueの認可と準備状態の確認

    NamespaceQueueを使用している場合に適用されます。

    NamespaceQueue の作成前に Namespace と認可済みの親 Queue が必要です。テナントには namespacequeues への Namespace 内 RBAC 権限を付与し、Ready=True と Authorized=True を確認してからワークロードを投入する構成になりました。

  • breakingHyperNode コントローラー切り替え手順

    custom.hypernode_controller_modeを設定している場合に適用されます。

    既存の統合インストールから移行する場合は、custom.hypernode_controller_mode=disabled を設定して controller-manager のロールアウトを待ってから standalone を有効にする必要があります。HyperNode を調整するプロセスが同時に複数動作しない構成です。

  • breakingカスタムトポロジープラグインの再構築

    HyperNodeGradientForJobFn、HyperNodeGradientForSubJobFn、または HyperNodeCandidateFnを使用している場合に適用されます。

    HyperNodeGradientForJobFn、HyperNodeGradientForSubJobFn、HyperNodeCandidateFn を使うカスタムトポロジープラグインは、更新後の構成に合わせて再構築が必要です。

  • breakingビルド要件の更新

    Go 1.26を使用していない場合に適用されます。

    Kubernetes 1.36.1 に対してビルドされ、ソースからビルドする場合は Go 1.26 が必要です。

  • breakingKubernetes 1.23 のサポート終了

    Kubernetes 1.23を使用している場合に適用されます。

    Kubernetes 1.23 でのデプロイはサポートされなくなりました。

  • breakingHyperNode gradient 戻り値型への対応

    HyperNode gradient return typesを使用している場合に適用されます。

    HyperNode gradient return types の変更に合わせて、カスタムトポロジープラグインの再構築が必要です。

  • breakingadmission-init Jobs の TTL クリーンアップ

    Helm admission-init Jobsを使用している場合に適用されます。

    Helm の admission-init Jobs は、成功したフックを直ちに削除する方式から TTL によるクリーンアップへ変更されました。

その他の記録済み変更 89 件すべてsecurity fixes 1 · additions 33 · fixes 32 · value changes 12 · constraints 8 · defaults 2 · removals 1

security fixes (1)

  • Adds release SBOM generation and Security Insights metadata

additions (33)

  • The UnschedulableJobCache records why a Job could not be scheduled and uses plugin-provided event hints to decide when it should be evaluated again.
  • The feature is disabled by default. Enable it with the scheduler feature gate: bash helm upgrade --install volcano volcano-sh/volcano \ --namespace volcano-system --create-namespace --version 1.16.0 \ --set custom.scheduler_feature_gates="UnschedulableJobCache=true"
  • NamespaceQueue introduces namespace-local queue management while preserving administrator control over the cluster-level resource hierarchy.
  • Controller-maintained authorization and readiness conditions, with final scheduler readiness checks before admission.
  • The new fairshare plugin tracks cumulative resource-seconds per namespace within a queue and applies exponential half-life decay.
  • Optional enqueue gating and ConfigMap persistence across scheduler restarts.
  • PodGroup anti-affinity expresses isolation at the workload-group level. It selects peer PodGroups by labels and namespace selectors and applies the separation rule at a named or numbered HyperNode tier.
  • The standalone controller provides an independent deployment and operational boundary while retaining the same HyperNode API, discovery configuration, and implementation.
  • A dedicated vc-hypernode-controller-manager binary, image, Deployment, RBAC, and Helm configuration.
  • Adds hami-vnpu-core integration for Ascend memory virtualization and compute time slicing.
  • Checks Ascend health using allocatable devices and adds vGPU UUID-based allowlist/denylist constraints.
  • Adds inqueue resource metrics, queue workload-state metrics, and volcano_eviction_transactions_total{action}.
  • Makes scheduler job/task updater concurrency configurable
  • logs loaded scheduler configuration for troubleshooting
  • Adds namespace columns and stable sorting to vcctl pod list
  • release automation for Linux/macOS amd64/arm64 CLI archives, checksums, and SLSA provenance
  • Adds scheduling.volcano.sh/v1beta1 NamespaceQueue
  • Adds spec.topologyAffinity.podGroupAntiAffinity
  • Adds Numatopology.spec.podAllocations
  • Adds Session.AddHintProvider and QueueingHint-style event registration for unschedulable-job retries
  • Adds the Queue annotation volcano.sh/nodegroup-resource-limits
  • Adds the fairshare.* arguments
  • Adds Job plugin option svc: ["--inject-hosts-env=false"]
  • Adds Pod annotations volcano.sh/vgpu-use-gpuuuid and volcano.sh/vgpu-nouse-gpuuuid
  • Adds --job-updater-worker-num and --task-updater-worker-num
  • Adds custom.hypernode_controller_mode
  • Adds custom.admission_init_ttl (default 3600 seconds)
  • retention annotations for the existing Volcano CRDs
  • Configures GOMAXPROCS using container CPU quotas across Volcano components.
  • Update CRDs and RBAC together with the control-plane components
  • Gang-aware gangPreempt and gangReclaim remain explicit actions
  • Caps how much a queue can allocate from each nodegroup while allowing placement in other permitted groups.
  • Adds pod-level resource settings and accounts for restartable init containers/native sidecars and Pod overhead in effective requests used by the Volcano agent.

fixes (32)

  • Registers upstream PreFilter hooks for CSI limits, node affinity, and volume-zone checks
  • avoiding phantom reservations when a later plugin rejects admission
  • Includes gate-reserved resources from descendant queues in ancestor quota checks
  • Preserves Completed state after finished Pods are deleted
  • Returns Closed queues to Closing on resync when PodGroups remain
  • Uses PodGroup MinResources for Volcano Jobs that do not yet have Pods
  • closes a remaining overflow path so large device counts cannot wrap into negative quota usage
  • preventing false NUMA policy failures
  • preventing Pods such as Spark executors with newly created PVCs from remaining permanently outside scheduler consideration
  • restores node state after unsuccessful updates
  • Adds missing nil checks for PodGroup-related cache paths
  • Honors NeedContinueAllocating after PrePredicate failures
  • Retains the allocation-rate policy default range when its arguments are omitted.
  • Formats effectively unlimited resource values consistently in scheduler resource strings.
  • Corrects UpdateHyperNode rebuild logic
  • Honors nominated HyperNodes without hard topology mode
  • Guards annotation patches by Pod UID when Pods are recreated
  • Avoids deleting the PodGroup for targeted Pod restarts
  • Falls back to replica count when partition minPartitions is omitted.
  • Returns status-update failures for retry
  • Synchronizes TaskInfo allocation annotations across binding and rollback
  • Prevents idle-memory underflow
  • Fixes large-cluster vGPU scheduling coordination.
  • Corrects allocation resource accounting
  • Rechecks device feasibility after tentative evictions before committing a reclaim decision.
  • Completes or requeues popped Pods on early exits
  • Rejects non-positive worker counts
  • Matches CNI plugins by type rather than display name.
  • Deduplicates Pod lists by namespace and name
  • reports all invalid subgroup and hierarchical-weight entries
  • preserves the existing Volcano CRDs and their custom resources on uninstall
  • avoiding scheduler stalls for very large counts

value changes (12)

  • Bounded retries**: A configurable watchdog retries cached Jobs after a maximum skip duration, defaulting to five minutes. The cache is in memory and is cleared on scheduler restart.
  • Historical usage ordering within a queue, with a default four-hour half-life.
  • Fairshare influences pending-job ordering and optional enqueue admission. It does not preempt or reclaim already-running jobs. Persistence is disabled by default.
  • The usage plugin now maintains a session-level shadow load cache for assigned Pods whose usage is not yet visible in metrics.
  • The metrics.interval setting defines the monitoring delay window and defaults to 30 seconds.
  • Reuses the session NodeMap, batches nodeorder PreScore/Score work, and executes active score plugins in one parallel node traversal before plugin-owned normalization and aggregation.
  • Updates Kubernetes dependencies to 1.36.1, the Go toolchain requirement to 1.26
  • Applies upstream DynamicResources Score and plugin-owned NormalizeScore to prioritized device requests
  • Uses the upstream VolumeBinding implementation in place of Volcano's fork
  • Updates golang.org/x/crypto to v0.56.0, x/net to v0.58.0, x/text to v0.41.0, and Prometheus to v0.311.3
  • Updates CNI, cgroups, filesystem notifications, Elasticsearch, Prometheus common, and the OTLP trace exporter
  • Updates e2e-framework, Ginkgo, Gomega, and gomonkey.

constraints (8)

  • Namespace-local parent/child hierarchies, with cluster/<name> references for cluster Queue parents.
  • Explicit workload references through spec.queue: namespace/<name>, resolved within the workload's namespace. Bare queue names continue to reference cluster Queues.
  • NamespaceQueue hierarchies allow five levels below a cluster Queue by default. Set --max-namespacequeue-depth on both the controller manager and admission webhook to change that limit.
  • Each term must specify exactly one of topologyTierName and topologyTier. Preferred terms additionally require a weight from 1 to 100. Required terms omit weight.
  • Enforcement applies to allocate. BestEffort Pods placed through backfill do not receive this isolation guarantee.
  • Kubernetes 1.36 support
  • Fairshare must precede DRF for historical-usage ordering to take effect.
  • update resource-exporter to a version supporting spec.podAllocations

defaults (2)

  • controller-manager, standalone, and disabled deployment modes, with integrated mode retained as the default.
  • NamespaceQueue and UnschedulableJobCache are disabled by default.

removals (1)

  • The final implementation no longer injects a PostStart hook.
Volcanoをスタックに追加

対応が必要なリリースが出たときに、週次メールでお知らせします。 今回のセキュリティパッチと破壊的変更も、その一例です。

スタックに追加 →