kubernetes容器化方案驗證報告

1、服務(wù)器列表

Confluence5.10.8 wiki遷移到簡書


圖片.png

對于有狀態(tài)的公共集群扎瓶,采用虛擬機(jī)方式部署所踊。(這些服務(wù)也可以容器化部署,但目前技術(shù)儲備不足概荷,一旦出問題排查麻煩)

圖片.png

2秕岛、相關(guān)信息

kubernetes版本:v1.12.2

docker版本:17.03.1-ce

kubernetes-dashboard:https://10.66.221.92:30443/

traefik負(fù)載均衡:http://10.66.221.92:8081/

registry私庫地址:http://10.66.221.138:5500/

鏡像列表:http://10.66.221.138:5500/v2/_catalog

鏡像標(biāo)簽列表:http://10.66.221.138:5500/v2/{鏡像路徑}/tags/list

dashboard-token令牌:

eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi1nMjl0NyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjIwMGQ0OGNjLWZjM2EtMTFlOC1hYjExLTAwNTA1Njg3MDYxMCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbiJ9.PMEbhFmJwg9Zj62XzrA1hcqHe2CGpqk9Ne6gX8J6B-iMXbHhHtrMLrxA2o6e68HQ2_DToI-cRsMuSwzb1iugslPmJIvgHgJ0kj3yW-tR6NZ4Azi8ua8LMLVg8a2gUCiumNezlmcp4zqmay1leoxaNvrNeLOqmrBoRNkyvMo_tOLYgK28iJrpPeF1OoiVnJN7fghu895ZqWs_0maAd891HiIjArW1_bt30SVy5tU2I6yiCwqiAztLSrM9Jd24EG8jxfov7gCN5Lsp80E-UtRHADQt8H55r0jAnKxxzdfy2NfeDcUteYXiNQtyIPpqgigC-rJHWPbdZw9SEq4X-dgdUQ

3、技術(shù)選型和驗證

3.1误证、docker容器管理平臺選型

圖片.png
圖片.png

根據(jù)上面2個表格得出:

swarm :上手最簡單瓣蛀,但是目前還不夠完善,社區(qū)也不活躍雷厂, 離生產(chǎn)環(huán)境有一定距離。

mesos: 上手復(fù)雜叠殷,社區(qū)也不活躍改鲫,超大集群可考慮。

kubernetes:上手較為復(fù)雜林束,有各種成熟方案像棘,但是社區(qū)活躍度高, Kubernetes于2017底在容器編排上勝出壶冒,目前大量公司都在使用缕题。

rancher:2.0簡化了kubernetes部署,但是我在實際使用中第一次沒部署成功胖腾,資料很少烟零,社區(qū)活躍度不高瘪松。

綜上對比, 我選擇了kubernetes作為容器編排工具锨阿,并使用官方kubeadm部署方式宵睦。

3.2、業(yè)務(wù)應(yīng)用部署

只需要準(zhǔn)備好k8s deployment等配置文件墅诡,就可通過dashboard管理平臺執(zhí)行完成應(yīng)用部署壳嚎。

3.3、服務(wù)動態(tài)擴(kuò)縮

可直接在dashboard管理平臺操作末早,隨時擴(kuò)容應(yīng)用運行實例個數(shù)烟馅。

3.4、服務(wù)容器鏡像構(gòu)建方案

3.4.1然磷、k8s鏡像私庫方式

選擇docker官方registry鏡像部署郑趁。

docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry

k8s集群Node節(jié)點需要加入鏡像白名單:

vim /etc/docker/daemon.json

圖片.png

3.4.2、打包發(fā)布鏡像

圖片.png

選擇靈雀云平臺用于代碼打包和鏡像構(gòu)建

  • 保持與公司開發(fā)流程和構(gòu)建鏡像一致样屠。
  • 靈雀云也是基于kubenetes二次開發(fā)穿撮,部署方式一致,現(xiàn)有容器化的服務(wù)不需要特別改造痪欲。
  • 考慮到本地化環(huán)境網(wǎng)絡(luò)隔離問題悦穿,我們交付給本地化部署的是鏡像文件。

過程步驟:

開發(fā)人員提交代碼-->通過靈雀云平臺構(gòu)建鏡像-->人工導(dǎo)出服務(wù)鏡像文件-->人工將鏡像導(dǎo)入到本地環(huán)境鏡像私庫

圖片.png

3.4.2业踢、k8s部署服務(wù)

一個業(yè)務(wù)服務(wù)部署只需要編寫Deployment栗柒,Service,Ingress 3個yaml配置文件知举, 通過kubernetes-dashboard管理平臺執(zhí)行即可完成部署瞬沦。

|

<pre style="margin: 0px; tab-size: 4; white-space: pre-wrap;">apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
app: deployment-default-hello-world
name: deployment-tutum-hello-world
namespace: cloud

spec:
selector:
matchLabels:
app: deployment-default-hello-world
replicas: 1
template:
metadata:
labels:
app: deployment-default-hello-world
spec:
containers:
- image: tutum/hello-world
name: tutum-hello-world
ports:
- containerPort: 80
name: web


apiVersion: v1
kind: Service
metadata:
name: service-tutum-hello-world
labels:
app: deployment-default-hello-world
namespace: cloud
spec:
type: NodePort
ports:

  • port: 80
    targetPort: 80
    nodePort: 31000
    selector:
    app: deployment-default-hello-world

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: traefik-web-ui
namespace: cloud
spec:
rules:

  • host: tutum-hello-world.local
    http:
    paths:
    • backend:
      serviceName: service-tutum-hello-world
      servicePort: 80

</pre>

|

3.5、負(fù)載均衡方案

圖片.png

最終選用的是Traefik雇锡。

3.5.1逛钻、traefik 七層網(wǎng)絡(luò)負(fù)載

圖片.png

3.5.1、負(fù)載均衡高可用

可指定多個k8s node節(jié)點作為負(fù)載均衡節(jié)點锰提,以DaemonSet方式部署曙痘。通過keepalived做熱備對外提供VIP。

圖片.png

3.6立肘、容器服務(wù)日志方案

圖片.png

目前靈雀云已做好的基礎(chǔ)鏡像采用的是第一種方式边坤, 所以保持一致。

3.7谅年、容器網(wǎng)絡(luò)互通方案:

當(dāng)前k8s部署采用默認(rèn)的flannel網(wǎng)絡(luò)方案茧痒,解決了跨主機(jī)間容器直接使用自身 IP 進(jìn)行通信的問題,會對node節(jié)點會分配為每一個node節(jié)點分配一個唯一的ip/255.255.0.0 網(wǎng)段融蹂。(ip網(wǎng)段可以指定)

圖片.png

3.7.1旺订、網(wǎng)絡(luò)互通測試

圖片.png

測試結(jié)果

圖片.png

3.7.2弄企、容器網(wǎng)絡(luò)互通方案

上述k8s集群外的節(jié)點無法訪問內(nèi)部容器網(wǎng)絡(luò)。

導(dǎo)致的問題:dobbox提供接口的服務(wù)部署在容器耸峭,dobbox消費接口的服務(wù)部署在k8s集群外則調(diào)用接口失敗桩蓉。

我們使用 Flannel 作為 k8s 網(wǎng)絡(luò)組件,F(xiàn)lannel 的特點是每個宿主機(jī)上的容器網(wǎng)段是固定的劳闹,部署完不會再變院究,那我們只需要在宿主機(jī)的網(wǎng)關(guān)設(shè)備上添加靜態(tài)路由即可。

圖片.png

(由于是同一個網(wǎng)關(guān)本涕,且我沒有網(wǎng)關(guān)權(quán)限业汰,所以測試時我直接在(k8s集群外的服務(wù)器)10.66.221.138上添加路由進(jìn)行測試)。

在10.66.221.138服務(wù)器執(zhí)行以下命令:

ip route add 10.244.1.0/24 via 10.66.221.92
ip route add 10.244.2.0/24 via 10.66.221.93

執(zhí)行route -n查看:

圖片.png

k8s容器我已經(jīng)提前部署了tutum-hello-world.local菩颖,他有3個容器實例样漆。如圖:

圖片.png

執(zhí)行以下命令,成功訪問k8s集群中tutum-hello-world容器提供的80端口服務(wù)晦闰。(Node1的容器放祟,Node2的容器)

curl 10.244.1.93:80

curl 10.244.2.5:80

圖片.png

3.7.1、執(zhí)行互通方案后測試互通性

圖片.png

4呻右、demo示例服務(wù)測試

4.1跪妥、測試方案

開發(fā)2個測試的應(yīng)用, 如下表声滥。(以3.0常用應(yīng)用場景選擇測試功能范圍)

圖片.png

4.2眉撵、demo服務(wù)測試結(jié)果

圖片.png

5、性能測試

容器化技術(shù)會帶來一定網(wǎng)絡(luò)性能損耗落塑,建議由測試以實際本地化服務(wù)器資源進(jìn)行性能測試纽疟。(研發(fā)自測的話推薦Locust測試)

6、監(jiān)控

采用dashboard管理平臺監(jiān)控憾赁,能看到節(jié)點污朽、Pod的監(jiān)控(Pod的CPU、內(nèi)存龙考、網(wǎng)絡(luò)膘壶、磁盤等監(jiān)控)、kubernetes的各個組件狀態(tài)洲愤。

其他開源監(jiān)控(prometheus等)如有需求,可單獨調(diào)研顷锰。

7柬赐、結(jié)論

k8s方式容器化部署測試已通過,能滿足3.0本地化服務(wù)應(yīng)用場景官紫,以及各種自動擴(kuò)容肛宋,資源管理州藕,日志收集,復(fù)雜網(wǎng)絡(luò)互通等多種實際場景酝陈。

對于網(wǎng)絡(luò)網(wǎng)段需要規(guī)劃床玻,避免網(wǎng)段重復(fù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末沉帮,一起剝皮案震驚了整個濱河市锈死,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌穆壕,老刑警劉巖待牵,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異喇勋,居然都是意外死亡缨该,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門川背,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贰拿,“玉大人,你說我怎么就攤上這事熄云∨蚋” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵皱碘,是天一觀的道長询一。 經(jīng)常有香客問我,道長癌椿,這世上最難降的妖魔是什么健蕊? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮踢俄,結(jié)果婚禮上缩功,老公的妹妹穿的比我還像新娘。我一直安慰自己都办,他們只是感情好嫡锌,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著琳钉,像睡著了一般势木。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歌懒,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天啦桌,我揣著相機(jī)與錄音,去河邊找鬼。 笑死甫男,一個胖子當(dāng)著我的面吹牛且改,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播板驳,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼又跛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了若治?” 一聲冷哼從身側(cè)響起慨蓝,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎直砂,沒想到半個月后菌仁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡静暂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年济丘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洽蛀。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡摹迷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出郊供,到底是詐尸還是另有隱情峡碉,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布驮审,位于F島的核電站鲫寄,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏疯淫。R本人自食惡果不足惜地来,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望熙掺。 院中可真熱鬧未斑,春花似錦、人聲如沸币绩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缆镣。三九已至芽突,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間董瞻,已是汗流浹背诉瓦。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人睬澡。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像眠蚂,于是被迫代替她去往敵國和親煞聪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容