与Kubernetes的私人登记

时间:2018-02-16 20:19:48

标签: docker kubernetes registry

我正在尝试(出于测试目的)向kubernetes公开一个非常简单的图像pong http:

FROM golang:onbuild
EXPOSE 8000

我构建了泊坞窗图像:

docker build -t pong .

我创建了一个私人注册表(带证书):

docker run -d --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_ADDR=0.0.0.0:443 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key -p 443:443 registry:2.6.2

我创造了一个秘密:

kubectl create secret docker-registry regsecret --docker-server=localhost --docker-username=johndoe --docker-password=johndoe --docker-email=johndoe@yopmail.com

我上传了图片:

docker tag 9c0bb659fea1 localhost/pong
docker push  localhost/pong

我有一个不安全的注册表配置

{
  "storage-driver" : "aufs",
  "insecure-registries" : [
    "localhost"
  ],
  "debug" : true,
  "experimental" : true
}

所以我尝试用以下方法创建我的kubernetes pod:

apiVersion: v1
kind: Pod
metadata:
  name: pong
spec:
  containers:
    - name: pong
      image: localhost/pong:latest
      imagePullPolicy: Always
  imagePullSecrets:
    - name: regsecret

我在MacOS上使用docker Version 17.12.0-ce-mac49(21995)。

如果我使用image: localhost/pong:latest,我得到了:

waiting:
          message: 'rpc error: code = Unknown desc = Error response from daemon: error
            parsing HTTP 404 response body: invalid character ''d'' looking for beginning
            of value: "default backend - 404"'
          reason: ErrImagePull

自本周开始以来我一直坚持下去,但没有成功。

3 个答案:

答案 0 :(得分:1)

这不是注册表配置的问题。 我忘了提到我使用了minikube。

对于要考虑的标志,我必须删除minikube配置并重新创建

public loginByUsernameAndPassword(username: string, password: string): Observable<boolean> { let urlSearchParams = new URLSearchParams(); urlSearchParams.append('username', username); urlSearchParams.append('password', password); urlSearchParams.append('user_uniqueIdid', '0'); urlSearchParams.append('session_id', '0'); let body = urlSearchParams.toString(); let headers = new Headers(); headers.append('Content-Type', 'application/x-www-form-urlencoded'); return this.http.post(Api.getUrl(Api.URLS.Login), body, { headers: headers }) .map((response: Response) => { let res = response.json(); console.log(rs)// show Permissions[] if (res.StatusCode === 0 && res.Token) { this.currentUser = { username: username, token: res.Token } localStorage.setItem(AuthService.CURRENT_USER, JSON.stringify(this.currentUser)); return true; } else { return false; } }); }

minikube delete

答案 1 :(得分:0)

嘿尝试使用这个漂亮的前端应用https://hub.docker.com/r/konradkleine/docker-registry-frontend/

浏览您的注册表

也许这会给你一些提示,看起来注册表有一些配置问题......

答案 2 :(得分:0)

而不是先删除群集(minikube delete),可以在json编辑配置~/.minikube/config/config.json,以便相应地添加此部分:

{ ... "HostOptions": { ... "InsecureRegistry": [ "private.docker.registry:5000" ], ... }, ... } ... }

这仅适用于已启动的群集,因为配置文件不会以其他方式填充。上面使用minikube --insecure-registry=""的答案很好。