在國內如何巧妙獲取kubernetes各鏡像?

我們知道無論手動安裝kubernetes還是使用kubeadm安裝kubernetes,都需要以下各模塊的docker鏡像。

kube-proxy-amd64 kube-scheduler-amd64 kube-controller-manager-amd64 kube-apiserver-amd64 etcd-amd64 pause-amd64 kubernetes-dashboard-amd64 k8s-dns-sidecar-amd64 k8s-dns-kube-dns-amd64

由於國內的網絡原因,在搭建環境時,經常無法pull到這些鏡像。那我們可以考慮曲線救國,利用Docker Hub搭建自己的鏡像倉庫(當然你也可以在aliyun搭建)

一、前提條件:已註冊GitHub及Docker Hub賬戶

二、基本原理:

1、關聯GitHub,配置Docker Hub自動構建鏡像,

2、在Docker主機pull構建的鏡像,重新docker tag爲指定的鏡像名

三、操作步驟

1、登錄GitHub,創建代碼倉庫,比如Kubernetes

 

2、本地主機上git clone該倉庫

git clone https://github.com/904573261/Kubernetes.git

3、編寫各鏡像對應的Dockerfile文件,例如kube-apiserver-amd64


 
  1. mkdir kube-apiserver-amd64

  2. cd kube-apiserver-amd64

  3. vim Dockerfile

內容如下:


 
  1. FROM gcr.io/google_containers/kubernetes-apiserver-amd64:v1.9.0

  2. MAINTAINER shayu

說明:v1.9.0是鏡像tag,這裏你應該修改爲你需要的版本號。例如kubernetes v1.9.0對應的kubernetes-apiserver-amd64版本爲v1.9.x

4、commit代碼到Kubernetes倉庫


 
  1. git status

  2. git add .

  3. git status

  4. git commit -m "add Dockerfile:kubernetes-apiserver-amd64:v1.9.0"

  5. git push original master

我這裏沒有創建分支直接推送到master

5、GitHub上可以查詢到你的commit信息

6、登錄Docker Hub配置Automated Build鏡像

點擊Create下的Create Automated Build

如果之前未綁定,會提示綁定,按照步驟提示操作即可;

如果之前已經綁定,例如我之前已經綁定GitHub,點擊

選擇你創建的GitHub上的倉庫Kubernetes

填寫Name及Short Description,點擊Create按鈕,切換到Build Setting欄

填寫Dockerfile Location及Docker Tag Name,點擊Save Change,然後點擊上方的Trigger,就觸發構建鏡像。

切換到Build Details欄,會看到Queue->Building->Success或者Error

 

當然你可以點擊進入,查看Build過程或者Error的原因。

點擊Dashboard頁面,就可以看到你鏡像倉庫

下一次,當你修改了Dockerfile文件重新commit到GitHub上時,Docker Hub就自動開始構建新的鏡像。

7、將構建出的Kubernetes鏡像pull到本地主機,並重新tag爲希望的鏡像名

手動pull鏡像麻煩,藉助腳本實現,內容如下:


 
  1. #!/bin/bash

  2. images=(kube-proxy-amd64:v1.9.0 kube-scheduler-amd64:v1.9.0 kube-controller-manager-amd64:v1.9.0 kube-apiserver-amd64:v1.9.0

  3. etcd-amd64:3.1.10 pause-amd64:3.0 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.7 k8s-dns-kube-dns-amd64:1.14.7

  4. k8s-dns-dnsmasq-nanny-amd64:1.14.7)

  5. for image in ${images[@]} ; do

  6. docker pull shayu/$image

  7. docker tag shayu/$image gcr.io/google_containers/$image

  8. docker rmi shayu/$image

  9. done

雖然官網上給出的鏡像名爲k8s.gcr.io/kube-apiserver-amd64,但是實際上,根據我的操作來看,鏡像名應該爲gcr.io/google_containers/kube-apiserver-amd64(可能之前的版本不同)

Bash腳本運行後,docker images

下面就可以使用kubeadm init初始化kubernetes集羣了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章