1. 程式人生 > >GITHUB+DOCKER HUB製作kubernetes各映象

GITHUB+DOCKER HUB製作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 coredns

由於國內的網路原因,在搭建環境時,經常無法pull到這些映象。那我們可以考慮曲線救國,利用Docker Hub搭建自己的映象倉庫。

一、前提條件:已註冊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映象麻煩,藉助指令碼實現,內容如下:

  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叢集了。