首页 文章

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

提问于
浏览
0

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

我启动了私有docker注册表(ssl启用了htpasswd安全)并将其添加到覆盖网络上(因此可以从其他主机/ 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通过“minikube ssh” .

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

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

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

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

在此之后,我能够通过“docker login&docker pull”以及“curl with(cacert用户名/密码)”上面的minikube vm上的图像拉动工作完全正常,意味着我可以成功访问/拉出私有注册表图像里面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时,它会抛出错误:

未能拉形象“家庭的ThinkPad-的T420s:5000 /我 - 詹金斯”:没有发现错误同步荚,跳过图像我 - 詹金斯:RPC错误:代码= 2 DESC =错误,无法“StartContainer”为“私人詹金斯-container“with ErrImagePull:”rpc error:code = 2 desc = Error:image my-jenkins not found“

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

2 回答

  • 0

    你可以从secret.yml文件中的凭据中删除那些双引号并尝试再次旋转pod吗?

  • 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

    希望能帮助到你!

相关问题