通過docker,我們可以在單個主機上快速部署各個應用,但是實際的生産環境裡,不會單單存在一台主機,這就需要用到docker叢集管理工具了,本文将簡單介紹使用docker叢集管理工具kubernetes進行叢集部署。
本次搭建使用了三台主機,其環境資訊如下:
| 節點功能 | 主機名 | IP |
| ——————|:—————-:|——————-:|
| master | master |192.168.1.11 |
| slave1 | slave1 |192.168.1.12 |
| slave2 | slave2 |192.168.1.13 |
在三台主機的/etc/hosts檔案中添加以下内容
再把/etc/fstab檔案中帶有swap的行注釋。
官方推薦安裝docker版本為1.12
驗證docker版本
常用yum源均沒有這幾個安裝包,需要添加專門的yum源
查詢kubelet的狀态
初次安裝的情況下kubelet應未啟動成功,我們會按下面的步驟初始化叢集後會自動啟動的。
根據官方文檔進行初始化:
出現如下錯誤:
需要指定kubernetes-version。
首先查詢版本
版本為1.7.5,然後啟動參數中加入版本:
執行過程中會卡在如下步驟:
因為kubenetes初始化啟動會依賴某些鏡像,而這些鏡像預設會到google下載下傳,我們需要手動下載下傳下來這些鏡像後再進行初始化。
使用CTRL+C結束目前程序,然後到/etc/kubernetes/manifests/目錄下檢視各個yaml檔案,還有其他需要的鏡像檔案,彙總後如下:
因直接下載下傳這些google鏡像,下載下傳不下來,我們通過下載下傳dockerHUB/阿裡雲上的鏡像,然後更改tag。
master節點初始化成功,結果如下:
需要記住kubeadm join --token這句,後面會用到
安裝完network之後,你可以通過kubectl get pods --all-namespaces來檢視kube-dns是否在running來判斷network是否安裝成功。
如果以上STATUS中存在不是Running的需要再進行解決。
由于安全原因,預設情況下pod不會被schedule到master節點上,可以通過下面指令解除這種限制:
slave節點需要以下鏡像:
在msater節點上導出鏡像
複制到slave主機/opt目錄下,再導入即可:
在兩個slave節點上執行:
執行成功标志:
在mster節點上執行kubectl get nodes檢視是否成功:
可以看到,kubernetes叢集已經部署成功,可以使用了。
Installing kubeadm,https://kubernetes.io/docs/setup/independent/install-kubeadm/
使用kubeadm在Red Hat 7/CentOS 7快速部署Kubernetes 1.7叢集,http://dockone.io/article/2514
CentOS7.3利用kubeadm安裝kubernetes1.7.3完整版(官方文檔填坑篇),https://www.cnblogs.com/liangDream/p/7358847.html
How to execute “kubeadm init” v1.6.4 behind firewall,https://stackoverflow.com/questions/44432328/how-to-execute-kubeadm-init-v1-6-4-behind-firewall
使用 kubeadm 建立 kubernetes 1.9 叢集,https://www.kubernetes.org.cn/3357.html
本文轉自 sjfbjs 51CTO部落格,原文連結:http://blog.51cto.com/11886896/2072527