当从 docker 集线器(public 存储库)使用图像时,部署的 knative 服务失败,原因是 RevisionMissing

knative service deployed fails with reason RevisionMissing when image is used from docker hub(public repository)

我正在尝试在我的本地 Kubernetes 集群中部署 knative 服务(Docker Desktop for windows)。 当我使用来自 google 云容器注册表 (gcr.io/knative-samples/helloworld-go) 的图像时,我可以创建一个 knative 服务,但是当我使用来自 docker 中心的图像时,我遇到了一个问题。请注意,我没有在 Docker 注册表中使用任何私有存储库。

revision.serving 将在前 10 分钟处于 unknown 状态,之后更改为 false,原因是 ProgressDeadlineExceeded . knative 服务失败,原因 RevisionMissing。我尝试使用来自 docker hub 的官方 hello-world 图像,响应是一样的。 问题仅在我使用 docker 官方注册表中的图像时出现,但现在在使用 GCR 时出现。

下面是我用来创建 knative 服务的 Kubernetes 清单文件。

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: **********
spec:
  template:
    metadata:
      # This is the name of our new "Revision," it must follow the convention {service-name}-{revision-name}
      name: *******-rev1
    spec:
      containers:
        - image: docker.io/*****/****:v1
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3007

screenshot of kubernetes resources

注意:我使用的是 knative-serving 1.0 版 编辑:(我隐藏了图像名称)

status of revision.serving

由于 docker hub 进行身份验证的方式,您需要遵循使用私有注册表、创建机密等过程。以下是步骤:https://knative.dev/docs/serving/deploying-from-private-registry/

最后,我通过删除 YAML 文件中的端口会话解决了这个问题。如果包含容器端口,应用程序会在容器中启动(我已经验证了日志)但它永远不会收到流量并因 ProgressDeadlineExceeded 错误而失败。