1

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

revision.serving 将在前 10 分钟内处于未知状态,然后更改为 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

Kubernetes资源截图

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

revision.serving 的状态

4

2 回答 2

2

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

于 2021-11-29T05:32:03.633 回答
0

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

于 2021-11-26T12:59:12.747 回答