Volcano
v1.16.0Orchestration & Managementマルチテナントの公平性、トポロジーを考慮したスケジューリング、性能と可観測性、対応プラットフォームの拡張を含む、追加的な変更が中心のリリースです。多くの新しい挙動はデフォルトで有効になるものではありませんが、セキュリティ更新と互換性要件はアップグレード前に確認が必要です。
要対応 (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 です。
breaking
NamespaceQueueの許可 Namespace 制御NamespaceQueueを使用している場合に適用されます。クラスタ Queue の
spec.による管理者認可が必要です。省略または空のリストではallowedNamespaces NamespaceQueueの紐付けが拒否され、["*"]ではすべての Namespace が許可されます。breaking
NamespaceQueueの認可と準備状態の確認NamespaceQueueを使用している場合に適用されます。NamespaceQueueの作成前に Namespace と認可済みの親 Queue が必要です。テナントにはnamespacequeuesへの Namespace 内 RBAC 権限を付与し、Ready=TrueとAuthorized=Trueを確認してからワークロードを投入する構成になりました。breakingHyperNode コントローラー切り替え手順
custom.を設定している場合に適用されます。hypernode_controller_mode 既存の統合インストールから移行する場合は、
custom.を設定して controller-manager のロールアウトを待ってからhypernode_controller_mode=disabled standaloneを有効にする必要があります。HyperNode を調整するプロセスが同時に複数動作しない構成です。breakingカスタムトポロジープラグインの再構築
HyperNodeGradientForJobFn、HyperNodeGradientForSubJobFn、またはHyperNodeCandidateFnを使用している場合に適用されます。HyperNodeGradientForJobFn、HyperNodeGradientForSubJobFn、HyperNodeCandidateFnを使うカスタムトポロジープラグインは、更新後の構成に合わせて再構築が必要です。breakingビルド要件の更新
Go 1.を使用していない場合に適用されます。26 Kubernetes 1.に対してビルドされ、ソースからビルドする場合は36. 1 Go 1.が必要です。26 breaking
Kubernetes 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
UnschedulableJobCacherecords 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
fairshareplugin 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-managerbinary, image, Deployment, RBAC, and Helm configuration. - Adds
hami-vnpu-coreintegration 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.NamespaceQueuevolcano. sh/v1beta1 - Adds
spec.topologyAffinity. podGroupAntiAffinity - Adds
Numatopology.spec. podAllocations - Adds
Session.and QueueingHint-style event registration for unschedulable-job retriesAddHintProvider - 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.andsh/vgpu-use-gpuuuid volcano.sh/vgpu-nouse-gpuuuid - Adds
--job-updater-worker-numand--task-updater-worker-num - Adds
custom.hypernode_controller_mode - Adds
custom.(default 3600 seconds)admission_init_ttl - 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
gangPreemptandgangReclaimremain 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
usageplugin now maintains a session-level shadow load cache for assigned Pods whose usage is not yet visible in metrics. - The
metrics.setting defines the monitoring delay window and defaults to 30 seconds.interval - 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
Scoreand plugin-ownedNormalizeScoreto 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., resolved within the workload's namespace. Bare queue names continue to reference cluster Queues.queue: namespace/<name> - NamespaceQueue hierarchies allow five levels below a cluster Queue by default. Set
--max-namespacequeue-depthon both the controller manager and admission webhook to change that limit. - Each term must specify exactly one of
topologyTierNameandtopologyTier. 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, anddisableddeployment 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.
対応が必要なリリースが出たときに、週次メールでお知らせします。 今回のセキュリティパッチと破壊的変更も、その一例です。