2

我正在使用 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 HUB 上构建和部署的 docker 应用程序。我的问题是,当我尝试使用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 正确访问 Internet 和命令:

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

工作正常。

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

4

1 回答 1

1

根据马里奥的回复,我解决了配置 Docker HUB 凭据的问题。这里的程序

我认为 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
于 2020-02-28T14:39:09.387 回答