KNative 服务无法从 Docker HUB 下载 Hello World 图像

KNative Service unable to download Hello World image from Docker HUB

我正在使用 Vagrant 和 Vbox 在 Mac 上部署的 Kubernetes 上工作。 然后我安装了 Istio、Knative Serving 和 Eventing。

然后我定义了一个 service.yaml 文件,内容如下:

---
apiVersion: v1
kind: Namespace
metadata:
  name: hello-k8s-ns

---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: hello-k8s
  namespace: hello-k8s-ns
spec:
  template:
    spec:
      containers:
        - image: sasadangelo/hello-k8s

其中 sasadangelo/hello-k8s 是一个 Hello World!!! docker 我在 Docker HUB 上构建和部署的应用程序。我的问题是,当我尝试使用 kubect apply 命令部署它时,一切正常,但没有部署 Pod。我看到部署了服务,但是当我使用 kubect describe 分析它时,我看到以下错误消息:

Revision "hello-k8s-lm6hk" failed with message: Unable to fetch image "sasadangelo/hello-k8s": failed to resolve image to digest: failed to fetch image information: Get https://index.docker.io/v2/: dial tcp 54.72.52.58:443: connect: connection refused.

我不清楚为什么无法从 Docker HUB 下载图像。我的Vagrant VM正确上网及命令:

kubectl run hello-k8s --generator=run-pod/v1 --image=sasadangelo/hello-k8s:latest --port=80

工作正常。

由于我是 Knative 的新手,我怀疑我在 Knative 配置中遗漏了一些东西。有人可以帮忙吗?

根据 Mario 的回复,我解决了配置 Docker HUB 凭据的问题。 这里是 procedure.

我认为出于某种原因,KNative 不会简单地提取图像,而是会执行一些请求 Docker HUB 身份验证的额外内容(即验证摘要)。

按照链接的程序,如果你给出命令:

kubectl create secret mysecret ...

那么你需要这样修改service.yaml

---
apiVersion: v1
kind: Namespace
metadata:
  name: hello-k8s-ns

---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: hello-k8s
  namespace: hello-k8s-ns
spec:
  template:
  spec:
    containers:
      - image: sasadangelo/hello-k8s
  imagePullSecrets:  # <--------------- Add this line
    - name: docker-hub-registry # <---- Add this line