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
我正在使用 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