You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Knative Service部署失败:报RevisionMissing与ProgressDeadlineExceeded错误

Knative服务重新部署失败:Revision资源未注册问题排查与解决

问题详情

迭代Knative服务的代码/Docker镜像后,按以下步骤重新部署:

  • 推送新Docker镜像到私有仓库
  • 更新服务YAML文件中的镜像版本(完整YAML见下方)
  • 执行命令删除旧服务:kubectl -n myspacename delete -f myservicename.yaml
  • 执行命令重新创建服务:kubectl -n myspacename apply -f myservicename.yaml

部署后服务状态异常:

  1. 初始阶段:READY = Unknown,REASON = RevisionMissing
  2. 一段时间后:READY = False,REASON = ProgressDeadlineExceeded

查看Revision日志时得到报错:

no kind "Revision" is registered for version "serving.knative.dev/v1" in scheme "pkg/scheme/scheme.go:28"

服务YAML文件:

---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: myservicename
  namespace: myspacename
spec:
  template:
    metadata:
      annotations:
        autoscaling.knative.dev/class: kpa.autoscaling.knative.dev
        autoscaling.knative.dev/metric: concurrency
        autoscaling.knative.dev/target: '1'
        autoscaling.knative.dev/minScale: '0'
        autoscaling.knative.dev/maxScale: '5'
        autoscaling.knative.dev/scaleDownDelay: 60s
        autoscaling.knative.dev/window: 600s
    spec:
      tolerations:
        - key: nvidia.com/gpu
          operator: Exists
          effect: NoSchedule
      volumes:
        - name: nfs-volume
          persistentVolumeClaim:
            claimName: myspacename-models-pvc
      imagePullSecrets:
        - name: myrobotaccount-pull-secret
      containers:
        - name: myservicename
          image: quay.company.com/project/myservicename:0.4.0
          ports:
            - containerPort: 5000
              name: user-port
              protocol: TCP
          resources:
            limits:
              cpu: "4"
              memory: 36Gi
              nvidia.com/gpu: 1
            requests:
              cpu: "2"
              memory: 32Gi
          volumeMounts:
            - name: nfs-volume
              mountPath: /tmp/static/
          securityContext:
            privileged: true
          env:
            - name: CLOUD_STORAGE_PASSWORD
              valueFrom:
                  secretKeyRef:
                    name: myservicename-cloud-storage-password
                    key: key
          envFrom:
            - configMapRef:
                name: myservicename-config

问题根源

报错核心是Knative Serving控制器无法识别serving.knative.dev/v1版本的Revision资源,常见原因包括:

  • 集群安装的Knative Serving版本过低,不支持v1 API版本(v0.19之前的版本默认使用v1beta1)
  • Knative Serving的CRD未正确安装或损坏,导致Revision资源无法被集群识别
  • 手动删除服务的操作残留了异常资源,干扰了新服务的创建流程

修复方案

1. 检查并对齐Knative版本兼容性

先查看当前集群的Knative Serving版本:

kubectl get namespace knative-serving -o jsonpath='{.metadata.labels.serving\.knative\.dev/release}'
  • 如果版本低于v0.19:
    • 要么升级Knative Serving到支持v1 API的稳定版本
    • 要么修改YAML中的apiVersion为serving.knative.dev/v1beta1,同时调整对应字段(比如v1beta1中部分字段命名有差异)

2. 验证并修复Knative CRD

检查Revision对应的CRD是否存在:

kubectl get crd revisions.serving.knative.dev
  • 若CRD不存在,重新安装对应版本的Knative Serving CRD和核心组件:
    # 替换为你需要的Knative版本,示例为v1.12.0
    kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.12.0/serving-crds.yaml
    kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.12.0/serving-core.yaml
    
  • 若CRD存在但状态异常,先删除再重新安装:
    kubectl delete crd revisions.serving.knative.dev
    kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.12.0/serving-crds.yaml
    

3. 优化部署流程,避免资源残留

Knative支持滚动更新,无需删除旧服务,直接应用更新后的YAML即可:

kubectl -n myspacename apply -f myservicename.yaml

如果之前删除服务导致资源残留,先清理再重新部署:

kubectl -n myspacename delete revisions.serving.knative.dev --all
kubectl -n myspacename apply -f myservicename.yaml

4. 排查控制器日志

查看Knative Serving控制器的日志,确认是否有其他潜在问题:

kubectl logs -n knative-serving deployment/controller

根据日志中的其他错误信息针对性修复(比如权限问题、存储卷挂载失败等)

验证修复

重新部署后,检查服务状态:

kubectl -n myspacename get ksvc myservicename

当状态显示READY=True时,说明服务部署成功,可访问服务地址验证功能正常。

内容的提问来源于stack exchange,提问作者Alexis.Rolland

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:25:16