文档首页/ 云容器引擎 CCE/ 常见问题/ 模板插件/ Volcano调度器插件升级后,Volcano Job(vcjob)资源无法正常运行
更新时间:2025-05-13 GMT+08:00
分享

Volcano调度器插件升级后,Volcano Job(vcjob)资源无法正常运行

问题现象

Volcano调度器插件由1.4.7及以下版本升级到1.4.7以后版本时,出现新建的vcjob资源无法正常运行的现象。同时,API Server日志报错信息和volcano-admission组件报错信息分别如下。

API Server的日志报错信息:
...
W0318 14:57:51.376736      13 dispatcher.go:142] Failed calling webhook, failing open validatejob.volcano.sh: failed calling webhook "validatejob.volcano.sh": failed to call webhook: Post "https://volcano-admission-service.kube-system.svc:443/jobs/validate?timeout=30s": EOF 
E0318 14:57:51.376768      13 dispatcher.go:149] failed calling webhook "validatejob.volcano.sh": failed to call webhook: Post "https://volcano-admission-service.kube-system.svc:443/jobs/validate?timeout=30s": EOF
...

volcano-admission组件报错信息:

... no kind "AdmissionReview" is registered for version "admission.k8s.io/v1beta1" ...

问题原因

主要原因在于新旧版本的“webhooks.admissionReviewVersions”字段信息不兼容。

在旧版本(1.4.7及以下)中,MutatingWebhookConfiguration和ValidatingWebhookConfiguration资源对象的webhooks.admissionReviewVersions字段值为“v1beta1”,而在新版本(1.4.7以上)中,该字段的值为“v1”。在升级插件时,如果使用了高可用模式,当扩容volcano-admission的副本数时,旧版本的ReplicaSet会启动一个旧版本的“Pod”。如果该Pod未及时销毁,它将强制覆盖MutatingWebhookConfiguration和ValidatingWebhookConfiguration资源中的配置,将“webhooks.admissionReviewVersions”字段重置为“v1beta1”。此时,Kubernetes无法识别该字段信息,从而导致创建的vcjob资源无法正常运行。

具体的MutatingWebhookConfiguration和ValidatingWebhookConfiguration资源对象请参见表1

表1 涉及的资源对象

资源类型

资源名称

MutatingWebhookConfiguration

volcano-admission-service-jobs-mutate

volcano-admission-service-podgroups-mutate

volcano-admission-service-queues-mutate

volcano-admission-service-pods-mutate

ValidatingWebhookConfiguration

volcano-admission-service-jobs-validate

volcano-admission-service-pods-validate

volcano-admission-service-queues-validate

解决方法

请将下列资源对象的“webhooks.admissionReviewVersions”字段信息由“v1beta1”修改为“v1”后,再尝试重新创建vcjob资源。

  1. 请依次执行kubectl edit命令,依次修改表1中字段信息。以“volcano-admission-service-jobs-mutate”为例,介绍如何修改“webhooks.admissionReviewVersions”字段信息。

    执行以下命令,修改“volcano-admission-service-jobs-mutate”的Yaml文件。
    kubectl edit MutatingWebhookConfiguration volcano-admission-service-jobs-mutate
    在Yaml中,按i键编辑文件内容,将“webhooks.admissionReviewVersions”“v1beta1”修改为“v1”
    apiVersion: admissionregistration.k8s.io/v1
    kind: MutatingWebhookConfiguration
    metadata:
      annotations:
        meta.helm.sh/release-name: cceaddon-volcano
        meta.helm.sh/release-namespace: kube-system
      creationTimestamp: "2025-02-25T08:11:52Z"
      generation: 2
      labels:
        app.kubernetes.io/managed-by: Helm
        release: cceaddon-volcano
      name: volcano-admission-service-jobs-mutate
      resourceVersion: "252406"
      uid: 7e9bdaaf-1b6c-4975-a171-ada8456c12e5
    webhooks:
    - admissionReviewVersions:
      - v1beta1   # 将该内容修改为v1
     ...

    修改完成后,按Esc键退出编辑,输入:wq保存。

  2. 表1中对象的“webhooks.admissionReviewVersions”字段都修改完成后完成,执行以下命令删除未成功运行的vcjob资源。

    kubectl delete vcjob -n namespace vcjob_name

    回显结果如下:

    vcjob vcjob_name deleted

  3. 执行以下命令,重新创建vcjob资源。

    kubectl create -f vcjob.yaml   # 请替换为创建vcjob资源的YAML文件

    回显结果如下:

    job.batch.volcano.sh/vcjob_name created

  4. 执行以下命令,查看vcjob资源是否成功创建。

    kubectl get vcjob_name -n namespace

    回显结果如下,当STATUS为Running时,则说明vcjob资源创建成功。

    NAME         STATUS    MINAVAILABLE   RUNNINGS   AGE
    vcjob_name   Running   1                         2m30s

问题规避措施

在插件升级之前,您可以通过以下措施对以上问题进行规避:

  • 从Volcano调度器插件版本≤1.4.7升级到版本>1.4.7且≤1.13.7:在“升级插件”页面,请先将“插件规格”设置为“系统预置规格 > 单实例”或“自定义规格 > 实例数设置1”,然后进行升级。插件升级完成后,在“插件中心”中找到“Volcano调度器”插件,单击“编辑”。在“编辑插件”页面,将“插件规格”修改为所需规格即可。
  • 从Volcano调度器插件版本≤1.4.7升级到版本>1.13.7:在“升级插件”页面,请先将“插件规格”切换至“自定义规格 ”,并将“volcano-admission”组件的副本数设置为1,然后进行升级。插件升级完成后,在“插件中心”中找到“Volcano调度器”插件,单击“编辑”。在“编辑插件”页面,将“插件规格”修改为所需规格即可。

相关文档