![](/img/trans.png)
[英]Kubernetes cannot pull image from public docker image repository
[英]Unable to pull public docker image packages from GitHub through Kubernetes
我在 GitHub 中創建了一個示例 Node.js 項目,並為此創建了一個 docker 圖像。 我將 docker 圖像作為 package 上傳到同一存儲庫中。 這是一個公共回購。 我創建了一個 kubernetes 配置 yaml 文件,將此圖像用作 pod 圖像。 以下是 yaml 文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: server-deployment
spec:
selector:
matchLabels:
component: node-server
template:
metadata:
labels:
component: node-server
spec:
containers:
- name: node-server
image: docker.pkg.github.com/lethalbrains/intense_omega/io_service:latest
ports:
- containerPort: 3000
imagePullSecrets:
- name: dockerconfigjson-github-com
---
apiVersion: v1
kind: Service
metadata:
name: server-cluster-ip-service
spec:
selector:
component: node-server
ports:
- port: 3000
targetPort: 3000
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/inress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- http:
paths:
- path: /api/
backend:
serviceName: server-cluster-ip-service
servicePort: 3000
使用 Kubectl 應用此文件並檢查 pod 詳細信息后,我收到 ImagePullBackOff 錯誤。
我什至嘗試使用 dockerconfigjson secret 和 Github 個人訪問令牌的選項,但仍然是 sam 結果。
編輯:
這似乎是 GitHub 注冊表的問題,這里正在討論。
我可以推薦的是將圖像推送到docker 集線器,或者如果創建私有倉庫,您可以在Using a private Docker Registry with Kubernetes 中閱讀。
似乎有一種解決方法,但我沒有測試過。 它由@sudomaxime發布,可在此處獲取:
對於那些人來說,這是一個令人討厭的小解決方法:
- 在解決此問題之前,不要介意丟失藍/綠部署
- 不要介意 10-15 秒的應用程序啟動時間
- 使用 docker 群 / docker 堆棧部署
- 使用 CI 腳本進行部署
在您的 CI 腳本調用中:
$ docker stack rm {{ your_stack_name }} $ until [ -z $(docker stack ps {{ your_stack_name }} -q) ]; do sleep 1; done $ docker stack deploy --with-registry-auth -c docker-compose.yml {{ your_stack_name }}
基本上,您要求 Docker 調度程序停止 {{ your_stack_name }} 協調器下的所有服務。 docker swarm 的一個小竅門是
docker stack rm
會立即返回,即使某些服務沒有正確關閉,當您再次嘗試部署時可能會導致網絡錯誤。 這就是為什么我們使用一個小的內聯腳本until [ -z $(docker stack ps {{ your_stack_name }} -q) ]; do sleep 1; done
until [ -z $(docker stack ps {{ your_stack_name }} -q) ]; do sleep 1; done
until [ -z $(docker stack ps {{ your_stack_name }} -q) ]; do sleep 1; done
以等待適當的回報。希望它可以節省一些人的頭痛。 我想一個類似的臨時修復會幫助你。
這是一個非常令人沮喪的問題,對於我們必須使用藍/綠部署的應用程序,我們購買了一個私有倉庫來解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.