Docker最全教程——從理論到實戰(zhàn)(六)

托管到騰訊云容器服務

托管到騰訊云容器服務,我們的公眾號“magiccodes”已經(jīng)發(fā)布了相關的錄屏教程,大家可以結合本篇教程一起查閱。

自建還是托管金顿?

在開始之前,我們先來討論一個問題——是自建容器服務還是托管到云容器服務鲤桥?

這里筆者建議大家托管到云容器服務揍拆。對于中小團隊來說,很多情況下芜壁,團隊中的運維人員是缺失的礁凡,或者運維人員的水平非常有限——大部分比網(wǎng)吧的網(wǎng)管就好那么一點,從成本慧妄、安全(云端產(chǎn)品往往提供了一些解決方案顷牌,比如權限控制、災備塞淹、高可用窟蓝、數(shù)據(jù)加密等)、擴展性的角度饱普,使用云容器服務更加靠譜和省事运挫,而且是可以直接開箱即用的(可以直接跳過自建的初始化時間)。而且隨著生產(chǎn)力的繼續(xù)發(fā)展套耕,人的成本一定會越來越高于機器的成本谁帕,而且目前已經(jīng)是遠遠高于機器的成本了。因此冯袍,如何選擇匈挖,大家是否心中有數(shù)了呢?

接下來康愤,我們結合官方資料進行一定的對比:

騰訊云容器服務TKE對比自建容器服務

騰訊云容器服務TKE監(jiān)控與自建容器監(jiān)控對比

騰訊云容器服務監(jiān)控為容器集群儡循、服務、實例提供數(shù)據(jù)收集和數(shù)據(jù)展示功能征冷。使用容器服務監(jiān)控择膝,您可以查看集群、節(jié)點检激、服務肴捉、實例,容器近 30 個指標的監(jiān)控統(tǒng)計數(shù)據(jù)叔收,驗證集群是否正常運行并創(chuàng)建相應告警齿穗,監(jiān)控指標覆蓋面全,并且在持續(xù)增加中今穿。具體如下所示:

關于騰訊云容器服務

在使用云端產(chǎn)品時缤灵,我們需要先了解該產(chǎn)品。

?騰訊云容器服務(Tencent Kubernetes Engine,即TKE)為用戶解決容器集群的搭建以及運維管理工作腮出,無縫銜接了騰訊云的計算帖鸦、網(wǎng)絡、存儲胚嘲、監(jiān)控作儿、安全能力,幫助用戶升級開發(fā)模式馋劈、變更應用交付攻锰、重構數(shù)據(jù)管理方式。騰訊云容器服務提速應用部署妓雾、簡化集群管理娶吞,助力企業(yè)快速上云。

了解騰訊云容器服務械姻,會涉及到以下概念:

集群:是指容器運行所需云資源的集合议蟆,包含了若干臺云服務器官紫、負載均衡器等騰訊云資源盟猖。

節(jié)點:一臺已注冊到集群內(nèi)的云服務器俩块。

服務:由多個相同配置的容器和訪問這些容器的規(guī)則組成的微服務。

鏡像:Docker鏡像欢揖,用于部署容器服務陶耍,每個鏡像有特定的唯一標識(鏡像的Registry地址+鏡像名稱+鏡像Tag)。

騰訊自今年起她混,對騰訊云投入了大量的資源烈钞,并且給予了前所未有的重視和支持。筆者前不久受邀參與了騰訊云TKE專場技術交流會产上,這里分享幾張照片給大家:

騰訊與容器服務

騰訊在很早的時候就已經(jīng)開始使用容器服務了棵磷,并且根據(jù)內(nèi)部消息透露蛾狗,騰訊的新業(yè)務基本上均使用容器服務進行托管晋涣,而舊有業(yè)務也在逐步遷移到容器服務之中。比如大家所熟悉的LOL(英雄聯(lián)盟)沉桌,就使用了大量的容器實例用于構建和托管相關服務谢鹊。

眾所周知,一個復雜游戲的構建是非常不容易的留凭。英雄聯(lián)盟的構建包含了超過150個獨立的任務佃扼,需要構建每個英雄聯(lián)盟的特征。而構建包括各種形式和尺寸蔼夜,從傳統(tǒng)的調(diào)試構建到各種形式的未來內(nèi)容構建兼耀,還包括全球合作者,如騰訊(Tencent)和競舞臺(Garena)。單單完成構建瘤运,就使用超過了450臺虛擬機窍霞!后續(xù)改為使用Docker之后,構建的成本的降低大大提高了團隊的迭代速度拯坟。當然但金,中間也出現(xiàn)過許多問題,這些我們后續(xù)再講述郁季。本篇先行略過冷溃。

一般服務部署流程

為了讓大家更好的理解和使用云端產(chǎn)品,這里我們結合騰訊云容器服務梦裂,根據(jù)日常情況下我們服務部署的情況似枕,來講解本流程。

在開始之前年柠,有很多額外的初始步驟——比如注冊菠净、充值等等,這里筆者先行略過彪杉,本篇只圍繞一般情況下服務部署到云端的配置和部署流程毅往。因此,這里再強調(diào)下前提條件:

1.騰訊云賬號正常并且資金足夠派近,或者無門檻代金券充足攀唯,能夠滿足此次使用

2.本地服務鏡像已經(jīng)打包完畢(具體可以參閱之前的講解)

3.您已經(jīng)充分閱讀了前面的教程,或者對容器服務已經(jīng)比較了解

滿足了以上的前提條件渴丸,對于一般情況下侯嘀,服務托管到騰訊云,我們的主體流程如下所示:

創(chuàng)建集群和節(jié)點

集群:是指容器運行所需云資源的集合谱轨,包含了若干臺云服務器戒幔、負載均衡器等騰訊云資源;

節(jié)點:一臺已注冊到集群內(nèi)的云服務器土童。

如果大家對此不是很好理解的話诗茎,這里筆者做一個比喻——集群就好比某款手游,節(jié)點就如同該手游的某個區(qū)献汗,我們要玩游戲的話敢订,是必須登錄到某個區(qū)才能玩,就如同我們的服務實例罢吃,最終也是分布在各個節(jié)點上楚午。

注意:集群創(chuàng)建完畢之后,可以添加已有的節(jié)點尿招,也就是已購買的服務器矾柜,不過阱驾,操作系統(tǒng)必須一致!如果不一致怪蔑,添加已有節(jié)點時可以自動重置該服務器的操作系統(tǒng)啊易。

創(chuàng)建界面如下所示:?

其中,如果CIDR顯示沖突饮睬,我們就改到不沖突為止租谈。

節(jié)點這塊,大家可以選擇購買新的主機或者選擇已有主機捆愁,這里就不多介紹了割去。

創(chuàng)建命名空間和鏡像

這里我們需要了解下鏡像倉庫。什么是鏡像倉庫昼丑?鏡像倉庫就是用于存放Docker鏡像的倉庫呻逆,而Docker鏡像用于部署容器服務,每個鏡像有特定的唯一標識(鏡像的Registry地址+鏡像名稱+鏡像Tag)菩帝。

除了Docker官方提供了Docker Hub官方鏡像倉庫之外咖城,各大云廠商往往也提供了自己的鏡像倉庫,比如騰訊云的鏡像倉庫是TencentHub呼奢。如果我們要獲得最佳的體驗宜雀,那么使用云端產(chǎn)品時,我們建議將Docker鏡像推送到該云產(chǎn)品的鏡像倉庫握础,這樣鏡像拉取的延遲更小辐董,支持粒度以及可用性更高。

注意:此步驟不是必須的禀综,使用云端產(chǎn)品简烘,我們依然可以使用官方鏡像和第三方公共鏡像。

在本篇教程定枷,我們講解使用TencentHub孤澎,也就是騰訊云的鏡像倉庫。在容器服務的管理頁欠窒,我們就可以看到入口:

?首先覆旭,我們需要創(chuàng)建命名空間和鏡像。這里贱迟,我們進入【我的鏡像】頁面姐扮,先來創(chuàng)建命名空間絮供。

創(chuàng)建命名空間

命名空間的創(chuàng)建比較簡單:

?命名空間大家可以理解為目錄或者前綴衣吠,起一定的分類和約束作用,大家可以使用公司的名稱或者自己心中神往的詞匯壤靶,只要易于理解就行缚俏。命名空間OK之后,我們就需要創(chuàng)建鏡像:

創(chuàng)建鏡像?

新建頁面如下所示:

整個創(chuàng)建過程其實和我們在Github上創(chuàng)建一個代碼庫非常類似,只是這里界面的呈現(xiàn)不夠友好(先把產(chǎn)品經(jīng)理打一頓)忧换。我們在創(chuàng)建代碼庫的時候恬惯,也是需要填寫路徑(命名空間)和項目名稱(鏡像名稱),如下所示:?

通過代碼庫的類比亚茬,相信你能夠更好的理解鏡像倉庫酪耳。

創(chuàng)建服務

鏡像有了,那么接下來就可以創(chuàng)建服務了刹缝,相當于是把我們的代碼丟到web服務器上跑起來碗暗。服務很易于理解,比如數(shù)據(jù)庫服務梢夯、web服務等等言疗。

騰訊云容器服務的創(chuàng)建過程如下所示:

?基本設置

服務名稱、容器名稱我們建議和鏡像名稱保持一致颂砸,由于有些命名約束噪奄,比如“.”需要改成“_” )。

部署設置

我們推薦使用存活檢查和就緒檢查人乓,啟動延時最好不要設為0勤篮,實例數(shù)量大家可以根據(jù)需要改為自動調(diào)節(jié),比如根據(jù)CPU的使用率來彈性擴展色罚。

訪問設置

提供公網(wǎng)訪問叙谨,端口可以設置成80。如果需要提供https保屯,那么還需要開放443端口手负,對于某些僅需內(nèi)網(wǎng)訪問的服務,建議大家不要開啟公網(wǎng)端口姑尺。

?

服務創(chuàng)建完成之后竟终,我們希望鏡像在推送之后,能夠自動觸發(fā)服務更新切蟋。因此统捶,我們還需要配置鏡像觸發(fā)器。

配置鏡像觸發(fā)器

鏡像觸發(fā)器可以在每次生成新的Tag(鏡像版本)時柄粹,自行執(zhí)行動作喘鸟,如:自動更新使用該鏡像倉庫的服務。

我們可以通過【我的鏡像】頁面驻右,點擊剛添加的鏡像名稱什黑,進入詳情頁,然后點擊【觸發(fā)器】tab頁來打開觸發(fā)器管理頁面堪夭。

點擊【添加觸發(fā)器】按鈕可以來創(chuàng)建觸發(fā)器愕把。相關配置如下所示:

我們需要選擇對應的容器服務拣凹。我們推薦使用全部觸發(fā)這個觸發(fā)條件,大家也可以根據(jù)自己的需求設置指定Tag觸發(fā)恨豁,比如針對生產(chǎn)嚣镜、測試和開發(fā)環(huán)境。

推送鏡像

觸發(fā)器設置好了橘蜜,也就是整個水管都鋪設好了菊匿,只要打開水龍頭就可以開閘放水了。對于我們這里计福,這個水指的就是鏡像捧请。我們只需將我們的鏡像推送到騰訊云鏡像倉庫,即可自動完成整個服務部署流程棒搜。

鏡像推送的方式有很多疹蛉,比如通過CI工具構建和推送,也可以通過腳本來推送已有的鏡像力麸。這里可款,我們將介紹通過腳本來推送鏡像。

核心腳本代碼為:

docker login --username {用戶名} --password {密碼} ccr.ccs.tencentyun.com

docker push {鏡像名稱}:{鏡像版本}

注意:ccr.ccs.tencentyun.com為騰訊倉庫的地址克蚂。username為騰訊云賬號Id闺鲸,密碼為倉庫密碼。

如果忘記密碼埃叭,可以在此處重置:

Magicodes.Admin框架提供了騰訊云推送腳本摸恍,相關參數(shù)如下所示:

一般情況下,我們僅需提供默認的配置即可赤屋,即配置tencentyun.config即可:

鏡像地址可以從騰訊云的【我的鏡像】獲攘⑾狻:?

如果沒有特殊的配置,我們僅需執(zhí)行此腳本即可完成編譯类早、運行單元測試媚媒、打包、生成鏡像以及鏡像推送的整個過程涩僻。編譯的文件會放在tsoutputs目錄缭召,如下所示:

例如,我們可以執(zhí)行以下命令來發(fā)布Host工程逆日,也就是后臺服務:

./build-with-tencentyun.ps1 -pushType HOST -debug true ?

如果需要傳遞相關應用的自定義設置嵌巷,腳本這邊也提供了對設置文件的支持,例如:

如果在編譯前需要執(zhí)行單元測試并通過之后才允許發(fā)布室抽,腳本也提供了參數(shù)進行支持:

例如:

./build-with-tencentyun.ps1 -pushType HOST -debug true -runTest true

當單元測試失敗時搪哪,腳本將終止執(zhí)行:

除了使用腳本推送之外,我們還可以通過CI工具或者服務來完成自動構建和推送狠半。在后續(xù)的章節(jié)噩死,我們會進行講述颤难。

問題排查

將服務托管到云端時神年,我們可能會碰到一些問題已维。掌握一些手段或技巧,能夠讓我們更易于排查問題以及解決問題已日。

鏡像拉取問題

目前騰訊云容器服務日志中不會打印鏡像拉取失敗的具體錯誤垛耳,如下圖所示:

我們需要在服務器上拉取鏡像來查看具體日志錯誤,比如執(zhí)行以下命令:

sudo su

docker login --username {用戶名} --password {密碼} ccr.ccs.tencentyun.com

docker pull {鏡像名稱}

遠程登錄

在某些情況下飘千,我們需要登錄具體的容器實例來排查問題堂鲜,這點,騰訊云是能夠支持的:

登錄之后护奈,我們可以直接執(zhí)行命令缔莲,比如執(zhí)行dir命令列出所有的文件和目錄:

我們也可以上傳下載容器實例中的文件,如圖所示:

?

通過文件助手霉旗,我們能夠很方便的檢查和修改實例中的配置文件痴奏,或者查看具體日志。這對于我們調(diào)測或者檢查問題非常重要厌秒。

注意:使用文件助手上傳下載文件時读拆,注意加上當前工作目錄路徑,比如“/app/appsettings.json”鸵闪。

利用容器服務日志

在開發(fā)過程中檐晕,容器服務實例可能經(jīng)常會崩潰或者在運行中出現(xiàn)問題,一方面蚌讼,我們可以記錄相關日志或者將日志推送到日志服務辟灰,另一方面,我們強烈推薦大家利用好容器服務日志篡石。

在前面的【控制臺日志提供程序】章節(jié)伞矩,我們有詳細講解,配置了控制臺日志提供程序之后夏志,我們可以在容器服務實例中看到所有的日志乃坤,包括導致容器實例崩潰的日志,這點對于我們排錯也非常重要——因為往往崩潰太快沟蔑,有可能文件日志都來不及記錄或者推送湿诊。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瘦材,隨后出現(xiàn)的幾起案子厅须,更是在濱河造成了極大的恐慌,老刑警劉巖食棕,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朗和,死亡現(xiàn)場離奇詭異错沽,居然都是意外死亡,警方通過查閱死者的電腦和手機眶拉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門千埃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人忆植,你說我怎么就攤上這事放可。” “怎么了朝刊?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵耀里,是天一觀的道長。 經(jīng)常有香客問我拾氓,道長冯挎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任咙鞍,我火速辦了婚禮房官,結果婚禮上,老公的妹妹穿的比我還像新娘奶陈。我一直安慰自己易阳,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布吃粒。 她就那樣靜靜地躺著潦俺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪徐勃。 梳的紋絲不亂的頭發(fā)上事示,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音僻肖,去河邊找鬼肖爵。 笑死,一個胖子當著我的面吹牛臀脏,可吹牛的內(nèi)容都是我干的劝堪。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼揉稚,長吁一口氣:“原來是場噩夢啊……” “哼秒啦!你這毒婦竟也來了?” 一聲冷哼從身側響起搀玖,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤余境,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芳来,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡含末,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了即舌。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片佣盒。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖侥涵,靈堂內(nèi)的尸體忽然破棺而出沼撕,到底是詐尸還是另有隱情宋雏,我是刑警寧澤芜飘,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站磨总,受9級特大地震影響嗦明,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蚪燕,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一娶牌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧馆纳,春花似錦诗良、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至钥弯,卻和暖如春径荔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脆霎。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工总处, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人睛蛛。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓鹦马,卻偏偏與公主長得像,于是被迫代替她去往敵國和親忆肾。 傳聞我的和親對象是個殘疾皇子荸频,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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