無法訪問k8s.gcr.io下載鏡像問題解決辦法


部署K8S最大的難題是鏡像下載,在國內無FQ環境情況下很難從k8s.gcr.io等鏡像源里下載鏡像。
這種情況下正確做法是:

  1. 直接指定國內鏡像代理倉庫(如阿里雲代理倉庫)進行鏡像拉取下載。
  2. 成功拉取代理倉庫中的鏡像后,再將其tag打標簽成為k8s.gcr.io對應鏡像。
  3. 最后再刪除從代理倉庫中拉取下來的鏡像。
  4. 要確保imagePullPolicy策略是IfNotPresent,即本地有鏡像則使用本地鏡像,不拉取!
    或者將下載的鏡像放到harbor私有倉庫里,然后將image下載源指向harbor私倉地址。
# 阿里雲代理倉庫地址為:registry.aliyuncs.com/google_containers
# 比如下載
k8s.gcr.io/coredns:1.6.5
# 可以代理為:
registry.aliyuncs.com/google_containers/coredns:1.6.5

下面以阿里雲代理倉庫為例進行說明:

# 比如下載k8s.gcr.io/coredns:1.6.5鏡像,在國內默認是下載失敗的!
 
[root@k8s-vm01 coredns]# pwd
/opt/k8s/work/kubernetes/cluster/addons/dns/coredns
[root@k8s-vm01 coredns]# fgrep "image" ./*
./coredns.yaml:        image: k8s.gcr.io/coredns:1.6.5
./coredns.yaml:        imagePullPolicy: IfNotPresent
 
[root@k8s-vm03 ~]# docker pull k8s.gcr.io/coredns:1.6.5
Error response from daemon: Get https://k8s.gcr.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
 
# 這時候去指定國內的阿里雲鏡像代理倉庫進行下載
[root@k8s-vm03 ~]# docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5
1.6.5: Pulling from google_containers/coredns
c6568d217a00: Pull complete
fc6a9081f665: Pull complete
Digest: sha256:608ac7ccba5ce41c6941fca13bc67059c1eef927fd968b554b790e21cc92543c
Status: Downloaded newer image for registry.aliyuncs.com/google_containers/coredns:1.6.5
registry.aliyuncs.com/google_containers/coredns:1.6.5
 
# 然后打tag,並刪除之前從代理倉庫下載的鏡像
[root@k8s-vm03 ~]# docker tag registry.aliyuncs.com/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5
 
[root@k8s-vm03 ~]# docker images
REPOSITORY                                        TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/coredns                                1.6.5               70f311871ae1        5 months ago        41.6MB
registry.aliyuncs.com/google_containers/coredns   1.6.5               70f311871ae1        5 months ago        41.6MB
 
[root@k8s-vm03 ~]# docker rmi registry.aliyuncs.com/google_containers/coredns:1.6.5
Untagged: registry.aliyuncs.com/google_containers/coredns:1.6.5
Untagged: registry.aliyuncs.com/google_containers/coredns@sha256:608ac7ccba5ce41c6941fca13bc67059c1eef927fd968b554b790e21cc92543c
 
[root@k8s-vm03 ~]# docker images
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/coredns                       1.6.5               70f311871ae1        5 months ago        41.6MB
 
# 最終發現我們想要的k8s.gcr.io/coredns:1.6.5鏡像被成功下載下來了!
 
# 最后要記得:
# 確定imagePullPolicy鏡像下載策略是IfNotPresent,即本地有鏡像則使用本地鏡像,不拉取!
# 或者將下載好的鏡像放到harbor私有倉庫里,然后將image下載地址指向harbor倉庫地址。

以上總結三個步驟:

docker pull registry.aliyuncs.com/google_containers/coredns:1.6.5
docker tag registry.aliyuncs.com/google_containers/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5
docker rmi registry.aliyuncs.com/google_containers/coredns:1.6.5


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM