一、簡介
redhat 在今年9月份釋出了k8s 和 etcd 的yum 源(redhat 7),我們下面都是基于redhat 7作業系統以yum來建構k8s叢集,你也可以到github 下載下傳kubernetes 進行安裝部署
下面是k8s叢集架構

二、架構部署
基本資訊
2.1 etcd 安裝配置(etcd)
安裝etcd
配置 etcd配置檔案
這裡我直接使用腳本進行替換配置,也可以手工修改,主要是配置etcd位址,這裡主要做示範,就不搭建etcd叢集了,如果搭建etcd叢集可以參考coreos doc 建構etcd叢集。
注意:這裡的ip變量,因為我的位址是192網段, 是以我這裡簡單點直接grep 192來過濾。
配置etcd 啟動
2.2 kube master 安裝配置(kubem)
安裝 k8s master
配置 master預設配置
配置k8s master 啟動
2.3 kube minion 安裝配置(minion1,minion2)
安裝 k8s minion + docker(注意k8s 2個節點都需要同樣配置)
配置 k8s minion配置檔案
啟動k8s minion + docker
到此我們k8s叢集搭建完成了,我們可以使用如下指令在k8s master執行擷取nodes資訊:
2.4 使用工具quagga 配置容器間網絡互通
從前面k8s叢集搭建,你會看到網上搜尋的k8s叢集搭建容器網絡互通大部分都基于flannel 來做,但這裡我們使用quagga 來實作容器互通,使用quagga來做主要是覺得目前flannel通過端口轉發方式實作容器互通,從性能上來看還不太理想,同時flannel本身還不夠穩定,quagga的配置步奏如下:
安裝brctl工具
删除預設的docker0 網卡,并建立新的網卡kbr0
配置kbr0 ip(我們寫入一個配置檔案到作業系統的網絡配置目錄)
這裡注意:每個minion 節點配置不同的ipaddr,假設minion1 為172.11.11.1 ,則可以配置minion2為172.12.12.1,同時更改網關同步配置
更改docker預設參數配置,讓docker預設使用kbr0網卡
重新開機network和docker
注意:如果重新開機network 沒有加載kbr0,則需要重新開機作業系統
這裡有網友直接将quagga 配置好并打包為docker image,我們直接拿來使用,我們也可以自行在主控端上安裝quagga
等待幾秒鐘,我們通過以下指令檢視,可以看到route自動更新了。
注意:如果你執行指令route -n沒有發現更新,你可以嘗試stop 系統防火牆,再執行指令檢視。
三、kube-ui 安裝
kubernetes 自帶了一個kube-ui,用來展示kubernetes 叢集狀态,目前kube-ui 還比較簡單,隻展現了kube 節點資源使用率,rc,service,pod ,nodes 情況,預設情況下安裝kubernetes 叢集是沒有安裝kube-ui的,需要我們手工安裝。
注意:在安裝kube-ui 之前,你需要把kube master伺服器與其他kube minon 容器大二層網絡互通,直接辦法就是前面講到的使用工具quagga 配置容器間網絡互通這一節的流程在kube master 伺服器上執行一次,可以在kube master上配置一個網卡kbr0 ,網絡配置也跟其他minion節點容器網絡相同域,讓kube master 也能通路到kube minion 容器網絡,否則kube-ui 安裝好後會報無法通路minion pod位址。
安裝配置準備工作
kube-ui的docker image是在google gcr中,由于衆所周知的原因,我們在國内無法通路到這個源,這裡我将源下載下傳下來放到百度雲盤中,我們可以将此image 下載下傳下來後通過docker load 指令進行導入到kube minion或者私有倉庫中。
kube-ui image 國内源
同時我們要用到3個檔案 分别是kube-ui rc ,svc,kube-system,這3個檔案,rc和service 在kubernetes 安裝包kubernetes\cluster\addons\kube-ui路徑下,你可以從github下載下傳kubernetes 擷取這2個檔案,kube-system 檔案需要你自己定義建構,由于kubernetes 完整安裝包非常大,我這裡直接将這3個檔案内容展示,你可以直接複制内容命名一個檔案名稱使用kubectl create -f 進行建立,同時這裡我将kubernetes 1.1版本直接搬到了百度雲上,有需要可以下載下傳:
kuberntes 1.1版本 國内下載下傳位址
下面是kube-ui rc,svc 和kube-system 内容,建立的順序是kube-system-->kube-ui-rc-->kube-ui-svc。
kube-system.yaml
kube-ui-rc.yaml
kube-ui-svc.yaml
安裝配置過程
前面的準備工作準備好以後,kube-ui的安裝配置非常簡單,總結為下面幾步
(1)執行建立kube-system
(2)建立kube-ui-rc
這裡再提醒一下,一定要記得把kube-ui 鏡像導入到kube minion 中,否則由于無法通路gcr的源,會一直卡在這裡無法running 成功,同時注意由于我們的kube-ui 是建立在kube-system namespace 中的,所有我們查找rc,pod 都需要帶關鍵字 --namespace=kube-system 或--all-namespace。
(3)建立kube-ui-svc
(4)通路http://kube-master位址:8080/ui 可以看到我們kube-ui界面
四、總結
前面的配置,基本繞過了網上的一些建構k8s叢集不完整文檔的坑,主要有如下幾個坑。
1.
2.
五、參考文章
高可用及自動發現的docker基礎架構
centos 7實戰kubernetes部署
kubernetes 官方doc
作者介紹 王佩
新炬網絡雲計算進階工程師
目前主要研究docker相關的雲計算技術
<b></b>
<b>本文來自雲栖社群合作夥伴"dbaplus",原文釋出時間:2016-04-08</b>