天天看點

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

一、簡介

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

下面是k8s叢集架構

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

二、架構部署

基本資訊

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

2.1 etcd 安裝配置(etcd)

安裝etcd

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

配置 etcd配置檔案

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

注意:這裡的ip變量,因為我的位址是192網段, 是以我這裡簡單點直接grep 192來過濾。

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

配置etcd 啟動

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

2.2 kube master 安裝配置(kubem)

安裝 k8s master

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

配置 master預設配置

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

配置k8s master 啟動

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

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

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

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

配置 k8s minion配置檔案

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

啟動k8s minion + docker

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

到此我們k8s叢集搭建完成了,我們可以使用如下指令在k8s master執行擷取nodes資訊:

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

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

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

安裝brctl工具

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

删除預設的docker0 網卡,并建立新的網卡kbr0

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

配置kbr0 ip(我們寫入一個配置檔案到作業系統的網絡配置目錄)

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

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

更改docker預設參數配置,讓docker預設使用kbr0網卡

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

重新開機network和docker

注意:如果重新開機network 沒有加載kbr0,則需要重新開機作業系統

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

這裡有網友直接将quagga 配置好并打包為docker image,我們直接拿來使用,我們也可以自行在主控端上安裝quagga

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

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

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

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

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

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

kube-ui-rc.yaml

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

kube-ui-svc.yaml   

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

安裝配置過程

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

(1)執行建立kube-system

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

(2)建立kube-ui-rc

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

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

(3)建立kube-ui-svc

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

(4)通路http://kube-master位址:8080/ui 可以看到我們kube-ui界面

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

四、總結

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

1.

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

2.

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

五、參考文章

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

centos 7實戰kubernetes部署

kubernetes 官方doc

作者介紹 王佩

新炬網絡雲計算進階工程師

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

<b></b>

<b>本文來自雲栖社群合作夥伴"dbaplus",原文釋出時間:2016-04-08</b>

繼續閱讀