一、簡介
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相關的雲計算技術
本文來自雲棲社區合作伙伴"DBAplus",原文發佈時間:2016-04-08