在上一章kubeadm搭建kubernetes集群之一:構建標准化鏡像中我們用VMware安裝了一個CentOS7虛擬機,並且打算用這個虛擬機的鏡像文件作為后續整個kubernetes的標准化鏡像,現在我們就以這個鏡像為基礎,開始安裝kubernetes集群吧;
前提條件
由於要用到谷歌的服務,所以要求您的網絡環境可以科學上網,具體的方案就不在這里說了;
復制文件
如下圖所示,cent7是我們上一章操作完成后對應的CentOS7的VMware文件夾,現在把這個文件夾復制三份一模一樣的,再分別重命名為maste、node1、node2:
啟動master
打開VMware軟件,選中上面我們復制的master文件夾,選中里面的文件然后點擊“打開”按鈕,如下圖:
如下圖,點擊紅框中的“編輯虛擬機設置”按鈕
如下圖,在設置頁面中將虛擬機名字改成”master”:
如下圖,點擊紅框中的按鈕啟動master:
如下圖,在彈出的窗口中選擇“我已復制該虛擬機”:
修改hostname再重啟master
等master啟動完畢,進入系統,修改/etc/hostname文件,這里面只有一行內容“localhost.localdomain”,改成”master”;
修改完hostname文件后,重啟master;
啟動kubelet服務
執行以下命令設置kubelet自啟動,然后再啟動kubelet服務:
systemctl enable kubelet;systemctl start kubelet
執行以下命令,初始化kubernetes的master服務,此時由於要去下載谷歌服務的鏡像文件,所以請保證當前網絡可以科學上網::
kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=0.0.0.0
如果網絡沒有問題,就請耐心等待吧,大約二十分鍾就會完成init過程,如下圖:
注意上圖中的最后一句kubeadm join –token 4fccd2.b0e0f8918bd95d3e 192.168.119.132:6443,在node加入的時候我們就是用這一句來將node加入到集群的;
為什么init操作要用這么長時間呢?執行docker images命令可以看到下載多了很多鏡像,如下圖:
新增了6個鏡像;
如果不能科學上網,可以使用下面的方法下載鏡像:
下載鏡像
在運行kubeadm之前,需要在本地先下載一系列images,這些images名稱和版本,可以運行kubeadm init,初始化后得到
具體會生成在/etc/kubernetes/manifest目錄下,通過grep命令可以列出,比如
cat etcd.yaml | grep gcr*
image: gcr.io/google_containers/etcd-amd64:3.0.17
那具體需要下載哪些images和相應的版本呢? 可以參照kubernetes kubeadm手冊,具體地址
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/
查看kubeadm的版本號:
[root@master ~]# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.5", GitCommit:"f01a2bf98249a4db383560443a59bed0c13575df", GitTreeState:"clean", BuildDate:"2018-03-19T15:50:45Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
這里就有比較清楚的版本和對應關系。
如何獲取鏡像
國內因為gcr.io被牆,所以要么通過代理FQ獲取,要么尋找其他辦法。我的辦法是訪問
https://hub.docker.com/,然后搜索kube-apiserver-amd64,會列出各位大神已經build好的images
進入源代碼倉庫如下圖:
點擊dockerfile查看鏡像打包的版本
選擇相應的版本,進行pull
docker pull maichong/etcd-amd64:3.1.10 docker pull maichong/pause-amd64:3.0 docker pull maichong/kube-proxy-amd64:v1.9.2 docker pull maichong/kube-scheduler-amd64:v1.9.2 docker pull maichong/kube-controller-manager-amd64:v1.9.2 docker pull maichong/kube-apiserver-amd64:v1.9.2
下載完查看鏡像
創建kube目錄,添加kubectl配置
執行以下命令,把配置信息復制到執行目錄中:
mkdir -p $HOME/.kube;cp -i /etc/kubernetes/admin.conf $HOME/.kube/config;chown $(id -u):$(id -g) $HOME/.kube/config
執行以下命令,安裝Calico
kubectl apply -f http://docs.projectcalico.org/v2.4/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml
執行以下命令,看基礎服務的pod都起來了沒有:
kubectl get pods --all-namespaces
看到的pod信息如下圖所示,紅框中有一個pod並不是Running狀態,而是ContainerCreating:
這時候請耐心等待幾分鍾,再看就會變成下面的狀態:
用docker images命令看一下,發現多了幾個鏡像,如下圖:
用kubectl get node命令查看當前的節點信息,能看見只有一個master節點,如下圖:
至此,kubernetes集群的master節點就安裝完成了,因為還沒有加入node節點,所以此時還不能部署應用,等下一章我們將node節點加入后再部署應用試試;