无法通过从外部私人注册表中提取图像来启动minikube中的pod

时间:2017-06-13 10:45:35

标签: docker kubernetes minikube

我的笔记本电脑上安装了ubuntu。

我启动了私有docker注册表(ssl enabled + htpasswd secure)并将其添加到覆盖网络上(因此可以从其他主机/ vms访问)

这是代码(docker-compose.yaml):

version: "3"

services:
 registry:
  restart: always
  image: registry:2
  ports:
    - 5000:5000
  environment:
    REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
    REGISTRY_HTTP_TLS_KEY: /certs/domain.key
    REGISTRY_AUTH: htpasswd
    REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
    REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
  volumes:
    - /certs:/certs
    - ~/caas_rd/workspace/ci_cd_pipeline/registry_setup:/auth
  networks:
    - overlaynetwork
networks:
  overlaynetwork:

所以我的注册表在以下链接中运行(使用dns,我可以在浏览器中验证它):https://home-thinkpad-t420s:5000/v2/_catalog

现在我在笔记本电脑上安装了“Minikube”。 &安培;&安培; ssh it by“minikube ssh”。

我在minikube vm& amp;创建了一个文件夹“/etc/docker/certs.d”。根据说明添加证书:

https://docs.docker.com/engine/security/certificates/#understanding-the-configuration

我还修改了/ etc / hosts&&在/etc/ssl/certs/ca-certificates.crt附加了ca.cert。

并在minikube vm上重新启动docker service:sudo systemctl restart docker.service

在此之后,我可以通过“docker login& docker pull”& amp;也可以通过“curl with(cacert + username / password)” 上面工作得很好,意味着我可以成功访问/拉出minikube vm中的私人注册表图像。

然后我尝试创建一个秘密(在我的笔记本电脑上使用kubectl create -f)定义如下:

apiVersion: "v1"
kind: "Secret"
metadata:
  name: "ssl-proxy-secret"
  namespace: "default"
data:
 proxycert: "LS0..."
 proxykey: "LS0t..."
 htpasswd: "YWRt..."

并创建了一个pod(在我的笔记本电脑上使用kubectl create -f),如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: private-jenkins
spec:
  containers:
  - name: private-jenkins-container
    image: home-thinkpad-t420s:5000/my-jenkins
    volumeMounts:
    - name: secrets
      mountPath: /etc/secrets
  volumes:
  - name: secrets
    secret:
       secretName: ssl-proxy-secret

但是当我尝试运行此pod时,它会抛出错误:

无法提取图片“home-thinkpad-t420s:5000 / my-jenkins”:rpc错误:代码= 2 desc =错误:图片my-jenkins未找到 同步pod时出错,跳过:对于带有ErrImagePull的“private-jenkins-container”失败为“StartContainer”:“rpc error:code = 2 desc = Error:image my-jenkins not found”

如果我能够通过curl& amp;成功地在minikube vm中拉出图像docker login / pull ......那么为什么pod创建失败并出现上述错误?

2 个答案:

答案 0 :(得分:0)

您是否可以从secret.yml文件中的凭据中删除这些双引号并尝试再次旋转pod?

答案 1 :(得分:0)

您需要创建一个单独的kubernetes registry secret。可以使用此命令:

kubectl create secret docker-registry <secret-name> \
--docker-email=<your-email> --docker-username=<registry-user> \
--docker-password=<registry-password> --docker-server=<registry-server-domain>

之后,您可以更新pod configuration,如下所示:

apiVersion: v1
kind: Pod
metadata:
  name: private-jenkins
spec:
  containers:
  - name: private-jenkins-container
    image: home-thinkpad-t420s:5000/my-jenkins
  imagePullSecrets:
    - name: <secret-name>

参考:link

希望它有所帮助!