踏上kubernetes的第一步:集羣環境部署介紹

一、簡介

 

 

redhat 在今年9月份發佈了k8s 和 etcd 的yum 源(redhat 7),我們下面都是基於redhat 7操作系統以yum來構建k8s集羣,你也可以到github 下載kubernetes 進行安裝部署

 

下面是k8s集羣架構

20160816043513997.jpg

 

 

二、架構部署

 

 

基本信息

 

20160408104502444.png

 

2.1 etcd 安裝配置(etcd)

 

安裝etcd

 

20160408104503607.png

 

配置 etcd配置文件

 

這裏我直接使用腳本進行替換配置,也可以手工修改,主要是配置etcd地址,這裏主要做演示,就不搭建etcd集羣了,如果搭建etcd集羣可以參考coreos doc 構建etcd集羣。

 

注意:這裏的ip變量,因爲我的地址是192網段, 所以我這裏簡單點直接grep 192來過濾。

 

20160408104503693.png

 

配置etcd 啓動

 

20160408104505146.png

 

2.2 kube master 安裝配置(kubem)

 

安裝 k8s master

 

20160408104505251.png

 

配置 master默認配置

 

20160408104506810.png

 

20160408104508425.png

 

20160408104540585.png

 

20160408104543351.png

 

 

配置k8s master 啓動

 

20160408104630738.png

 

2.3 kube minion 安裝配置(minion1,minion2)

 

安裝 k8s minion + docker(注意k8s 2個節點都需要同樣配置)

 

20160408104631114.png

 

配置 k8s minion配置文件

 

20160408104632545.png

 

20160408104635292.png

 

啓動k8s minion + docker

 

20160408104642413.png

 

到此我們k8s集羣搭建完成了,我們可以使用如下命令在k8s master執行獲取nodes信息:

 

20160408104642521.png

 

2.4 使用工具quagga 配置容器間網絡互通

 

從前面k8s集羣搭建,你會看到網上搜索的k8s集羣搭建容器網絡互通大部分都基於flannel 來做,但這裏我們使用quagga 來實現容器互通,使用quagga來做主要是覺得目前flannel通過端口轉發方式實現容器互通,從性能上來看還不太理想,同時flannel本身還不夠穩定,quagga的配置步奏如下:

 

安裝brctl工具

20160408104643346.png

 

刪除默認的docker0 網卡,並創建新的網卡kbr0

 

20160408104643190.png

 

配置kbr0 IP(我們寫入一個配置文件到操作系統的網絡配置目錄)

 

這裏注意:每個minion 節點配置不同的IPADDR,假設minion1 爲172.11.11.1 ,則可以配置minion2爲172.12.12.1,同時更改網關同步配置

 

20160408104644518.png

 

更改docker默認參數配置,讓docker默認使用kbr0網卡

 

20160408104645872.png

 

重啓network和docker

 

注意:如果重啓network 沒有加載kbr0,則需要重啓操作系統

 

20160408104646564.png

 

這裏有網友直接將quagga 配置好並打包爲docker image,我們直接拿來使用,我們也可以自行在宿主機上安裝quagga

 

20160408104646138.png

 

等待幾秒鐘,我們通過以下命令查看,可以看到route自動更新了。

 

注意:如果你執行命令route -n沒有發現更新,你可以嘗試stop 系統防火牆,再執行命令查看。

 

20160408104648344.png

 

 

三、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

 

20160408104649710.png

 

kube-ui-rc.yaml

 

20160408104650423.png

20160408104652438.png

20160408104655146.png

 

kube-ui-svc.yaml   

 

20160408104657527.png

 

安裝配置過程

前面的準備工作準備好以後,kube-ui的安裝配置非常簡單,總結爲下面幾步

 

(1)執行創建kube-system

 

20160408104701780.png

 

(2)創建kube-ui-rc

 

這裏再提醒一下,一定要記得把kube-ui 鏡像導入到kube minion 中,否則由於無法訪問gcr的源,會一直卡在這裏無法running 成功,同時注意由於我們的kube-ui 是創建在kube-system namespace 中的,所有我們查找rc,pod 都需要帶關鍵字 --namespace=kube-system 或--all-namespace。

 

20160408104702604.png

 

(3)創建kube-ui-svc

 

20160408104703515.png

 

(4)訪問http://kube-master地址:8080/ui 可以看到我們kube-ui界面

 

20160408104351917.jpg

 

20160408104716949.png

 

 

四、總結

 

 

前面的配置,基本繞過了網上的一些構建k8s集羣不完整文檔的坑,主要有如下幾個坑。

 

1.

20160408104718123.png

 

2.

20160408104720735.png

 

 

五、參考文章

 

 

高可用及自動發現的Docker基礎架構

CentOS 7實戰Kubernetes部署

kubernetes 官方doc

 

作者介紹 王佩

  • 新炬網絡雲計算高級工程師

  • 目前主要研究Docker相關的雲計算技術


本文來自雲棲社區合作伙伴"DBAplus",原文發佈時間:2016-04-08