如何引用kubernetes docker-registry

How to reference kubernetes docker-registry

我已经通过 helm 在 Kubernetes 上安装了 docker-registry。

我可以使用端口转发 docker 推送到 docker push 0.0.0.0:5000/<my-container>:v1

现在如何从 deployment.yaml 引用注册表中的图像?

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: <my-container>-deployment-v1
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: <my-container>-deployment
        version: v1
    spec:
      containers:
      - name: <my-container>
        image: 0.0.0.0:5000/<my-container>:v1 # <<< ????
        imagePullPolicy: Always
        ports:
        - containerPort: 80
      imagePullSecrets:
        - name: private-docker-registry-secret

这确实列出了我的容器:

curl -X GET http://0.0.0.0:5000/v2/_catalog

我在部署时一直收到 ImagePullBackOff

我使用内部服务名称和集群 ip 地址进行了绑定,但仍然无法正常工作。

然后尝试使用秘密:

{
  "kind": "Secret",
  "apiVersion": "v1",
  "metadata": {
    "name": "running-buffoon-docker-registry-secret",
    "namespace": "default",
    "selfLink": "/api/v1/namespaces/default/secrets/running-buffoon-docker-registry-secret",
    "uid": "127c93c1-53df-11e9-8ede-a63ad724d5b9",
    "resourceVersion": "216488",
    "creationTimestamp": "2019-03-31T18:01:56Z",
    "labels": {
      "app": "docker-registry",
      "chart": "docker-registry-1.7.0",
      "heritage": "Tiller",
      "release": "running-buffoon"
    }
  },
  "data": {
    "haSharedSecret": "xxx"
  },
  "type": "Opaque"
}

并将秘密添加到 deployment.yaml:

  imagePullSecrets:
    - name: running-buffoon-docker-registry-secret

然后我得到:

image "x.x.x.x/:<my-container>v1": rpc error: code = Unknown desc = Error response from daemon: Get https://x.x.x.x/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

您需要获取本地 docker 注册表的 cluster-ip

您会在仪表板中找到它 - 只需访问注册表 pod 页面,然后转到相关的 service。用集群 ip 替换图像规范的 0.0.0.0。还要确保 port 匹配 - 通常注册表服务公开的端口与集群内公开的实际端口不同。如果您在注册表中设置了身份验证,则还需要 imagepullsecret

我已经在博客上介绍了使用本地注册表设置 minikube - 可能会有帮助。 https://amritbera.com/journal/minikube-insecure-registry.html