簡體   English   中英

無法通過從外部專用注冊表中提取圖像來在minikube中啟動Pod

[英]Not able to start a pod in minikube by pulling image from external private registry

我在筆記本電腦上安裝了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服務:sudo systemctl restart docker.service

之后,我可以通過上面的“ docker login&docker pull”和“ curl with(cacert + username / password)”在minikube vm上拉映像,這工作正常,這意味着我可以成功訪問/拉出私有注冊表映像在minikube虛擬機中。

然后,我嘗試創建一個秘密(在我的筆記本電腦上,使用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時出錯,跳過:對於“ private-jenkins”失敗於“ StartContainer”容器”和ErrImagePull:“ rpc錯誤:代碼= 2 desc =錯誤:未找到圖像my-jenkins”

如果我能夠通過curl&docker login / pull成功在minikube vm中提取圖像...那么為什么pod的創建失敗並出現上述錯誤?

您能否特別從secret.yml文件中的憑據中刪除那些雙引號,然后嘗試再次旋轉Pod?

您需要創建一個單獨的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>

參考: 鏈接

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM