國內獲取docker映象
我們知道無論手動安裝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
-
mkdir kube-apiserver-amd64
-
cd kube-apiserver-amd64
-
vim Dockerfile
內容如下:
-
FROM gcr.io/google_containers/kubernetes-apiserver-amd64:v1.9.0
-
MAINTAINER shayu
說明:v1.9.0是映象tag,這裡你應該修改為你需要的版本號。例如kubernetes v1.9.0對應的kubernetes-apiserver-amd64版本為v1.9.x
4、commit程式碼到Kubernetes倉庫
-
git status
-
git add .
-
git status
-
git commit -m "add Dockerfile:kubernetes-apiserver-amd64:v1.9.0"
-
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映象麻煩,藉助指令碼實現,內容如下:
-
#!/bin/bash
-
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
-
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
-
k8s-dns-dnsmasq-nanny-amd64:1.14.7)
-
for image in ${images[@]} ; do
-
docker pull shayu/$image
-
docker tag shayu/$image gcr.io/google_containers/$image
-
docker rmi shayu/$image
-
done
雖然官網上給出的映象名為k8s.gcr.io/kube-apiserver-amd64,但是實際上,根據我的操作來看,映象名應該為gcr.io/google_containers/kube-apiserver-amd64(可能之前的版本不同)
Bash指令碼執行後,docker images
下面就可以使用kubeadm init初始化kubernetes叢集了。