1. 程式人生 > >Docker最全教程——從理論到實戰(六) Docker最全教程——從理論到實戰(一) Docker最全教程——從理論到實戰(二) Docker最全教程——從理論到實戰(三) Docker最全教程——從理論到實戰(四) Docker最全教程——從理論到實戰(五)

Docker最全教程——從理論到實戰(六) Docker最全教程——從理論到實戰(一) Docker最全教程——從理論到實戰(二) Docker最全教程——從理論到實戰(三) Docker最全教程——從理論到實戰(四) Docker最全教程——從理論到實戰(五)

原文: Docker最全教程——從理論到實戰(六)

託管到騰訊雲容器服務

託管到騰訊雲容器服務,我們的公眾號“magiccodes”已經發布了相關的錄屏教程,大家可以結合本篇教程一起查閱。  

自建還是託管?

在開始之前,我們先來討論一個問題——是自建容器服務還是託管到雲容器服務? 這裡筆者建議大家託管到雲容器服務。對於中小團隊來說,很多情況下,團隊中的運維人員是缺失的,或者運維人員的水平非常有限——大部分比網咖的網管就好那麼一點,從成本、安全(雲端產品往往提供了一些解決方案,比如許可權控制、災備、高可用、資料加密等)、擴充套件性的角度,使用雲容器服務更加靠譜和省事,而且是可以直接開箱即用的(可以直接跳過自建的初始化時間)。而且隨著生產力的繼續發展,人的成本一定會越來越高於機器的成本,而且目前已經是遠遠高於機器的成本了。因此,如何選擇,大家是否心中有數了呢?
接下來,我們結合官方資料進行一定的對比:

 

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

優勢 騰訊雲容器服務(TKE)
自建容器服務
簡單易用 簡化叢集管理
騰訊雲容器服務提供超大規模容器叢集管理、資源排程、容器編排、程式碼構建,遮蔽了底層基礎構架的差異,簡化了分散式應用的管理和運維,您無需再操作叢集管理軟體或設計容錯叢集架構,因此也無需參與任何相關的管理或擴充套件工作。 您只需啟動容器叢集,並指定想要執行的任務即可,騰訊雲容器服務幫您完成所有的叢集管理工作,讓您可以集中精力開發 Docker 化的應用程式。
自建容器管理基礎設施通常涉及安裝、操作、擴充套件自己的叢集管理軟體、配置管理系統和監控解決方案,管理複雜。
靈活擴充套件 靈活叢集託管,整合負載均衡 您可以使用容器服務靈活安排長期執行的應用程式和批量作業。您還可以使用 API 獲得最新的叢集狀態資訊,以便整合您自己的自定義計劃程式和第三方計劃程式。 騰訊雲容器服務與負載均衡整合,支援在多個容器之間分配流量。您只需指定容器配置和要使用的負載均衡器,容器服務管理程式將自動新增和刪除。另外騰訊雲容器服務可以自動恢復執行狀況不佳的容器,保證容器數量滿足您的需求,以便為應用程式提供支援。 需要根據業務流量情況和健康情況人工確定容器服務的部署,可用性和可擴充套件性差
安全可靠 資源高度隔離,服務高可用 容器服務在您自己的雲伺服器例項中啟動,不與其他客戶共享計算資源。 您的叢集在私有網路中執行,因此您可以使用您自己的安全組和網路 ACL,這些功能為您提供了高隔離水平,並幫助您使用雲伺服器構建高度安全可靠的應用程式。 容器服務採用分散式服務架構,保證服務的故障自動恢復、快速遷移;結合有狀態服務後端的分散式儲存,實現服務和資料的安全、高可用。 自建容器服務因其核心問題及 Namespace 不夠完善,租戶、裝置、核心模組隔離性都比較差
高效 映象快速部署,業務持續整合 騰訊雲容器服務執行在您的私有網路中,高品質的 BGP 網路保證映象極速上傳下載,輕鬆支援海量容器秒級啟動,極大程度降低了執行開銷,使您的部署更加專注於業務執行。 您可以在騰訊雲容器服務上部署業務,開發人員在 GitHub 或其他程式碼平臺提交程式碼後,容器服務可立即進行構建、測試、打包整合,將整合的程式碼部署到預釋出環境和現網環境上。 自建容器服務的網路無保證,因此無法保證使用映象建立容器的效率
低成本 容器服務免費騰訊雲容器服務沒有任何附加費用,您可以在容器中免費呼叫 API 構建您的叢集管理程式。您只需為您建立的用於儲存和執行應用程式的雲服務資源(例如雲伺服器、雲硬碟等)付費。 需要投入資金構建、安裝、運維、擴充套件自己的叢集管理基礎設施,成本開銷大

 

騰訊雲容器服務TKE監控與自建容器監控對比

騰訊雲容器服務監控為容器叢集、服務、例項提供資料收集和資料展示功能。使用容器服務監控,您可以檢視叢集、節點、服務、例項,容器近 30 個指標的監控統計資料,驗證叢集是否正常執行並建立相應告警,監控指標覆蓋面全,並且在持續增加中。具體如下所示:        
優勢 騰訊雲容器服務(TKE) 自建容器服務
指標完整 涉及到叢集,服務,容器,pod 近 30 個指標 指標不完整,很多需要開發
搭建成本低 建立叢集時自帶 人工搭建,成本高
運維成本低 平臺助力運維,保證資料準確性 人工維護
儲存成本低 每個指標免費儲存 3 個月資料 根據儲存大小計算
擴充套件性高 平臺側會不斷完善和增加新的指標項 需要技術人員大量投入開發新指標
告警
問題排查手段 控制檯可以方便檢視容器 log, 並與 webshell 結合一鍵登入容器快速排查問題 需要手動登入到容器或者機器排查
       

關於騰訊雲容器服務

在使用雲端產品時,我們需要先了解該產品。 騰訊雲容器服務(Tencent Kubernetes Engine,即TKE)為使用者解決容器叢集的搭建以及運維管理工作,無縫銜接了騰訊雲的計算、網路、儲存、監控、安全能力,幫助使用者升級開發模式、變更應用交付、重構資料管理方式。騰訊雲容器服務提速應用部署、簡化叢集管理,助力企業快速上雲。 瞭解騰訊雲容器服務,會涉及到以下概念:
  • 叢集:是指容器執行所需雲資源的集合,包含了若干臺雲伺服器、負載均衡器等騰訊雲資源。
  • 節點:一臺已註冊到叢集內的雲伺服器。
  • 服務:由多個相同配置的容器和訪問這些容器的規則組成的微服務。
  • 映象Docker映象,用於部署容器服務,每個映象有特定的唯一標識(映象的Registry地址+映象名稱+映象Tag)。
騰訊自今年起,對騰訊雲投入了大量的資源,並且給予了前所未有的重視和支援。筆者前不久受邀參與了騰訊雲TKE專場技術交流會,這裡分享幾張照片給大家:

騰訊與容器服務

騰訊在很早的時候就已經開始使用容器服務了,並且根據內部訊息透露,騰訊的新業務基本上均使用容器服務進行託管,而舊有業務也在逐步遷移到容器服務之中。比如大家所熟悉的LOL(英雄聯盟),就使用了大量的容器例項用於構建和託管相關服務。 眾所周知,一個複雜遊戲的構建是非常不容易的。英雄聯盟的構建包含了超過150個獨立的任務,需要構建每個英雄聯盟的特徵。而構建包括各種形式和尺寸,從傳統的除錯構建到各種形式的未來內容構建,還包括全球合作者,如騰訊(Tencent)和競舞臺(Garena)。單單完成構建,就使用超過了450臺虛擬機器!後續改為使用Docker之後,構建的成本的降低大大提高了團隊的迭代速度。當然,中間也出現過許多問題,這些我們後續再講述。本篇先行略過。

一般服務部署流程

為了讓大家更好的理解和使用雲端產品,這裡我們結合騰訊雲容器服務,根據日常情況下我們服務部署的情況,來講解本流程。 在開始之前,有很多額外的初始步驟——比如註冊、充值等等,這裡筆者先行略過,本篇只圍繞一般情況下服務部署到雲端的配置和部署流程。因此,這裡再強調下前提條件:
  1. 騰訊雲賬號正常並且資金足夠,或者無門檻代金券充足,能夠滿足此次使用
  2. 本地服務映象已經打包完畢(具體可以參閱之前的講解)
  3. 您已經充分閱讀了前面的教程,或者對容器服務已經比較瞭解
滿足了以上的前提條件,對於一般情況下,服務託管到騰訊雲,我們的主體流程如下所示:

建立叢集和節點

叢集:是指容器執行所需雲資源的集合,包含了若干臺雲伺服器、負載均衡器等騰訊雲資源; 節點:一臺已註冊到叢集內的雲伺服器。 如果大家對此不是很好理解的話,這裡筆者做一個比喻——叢集就好比某款手遊,節點就如同該手遊的某個區,我們要玩遊戲的話,是必須登入到某個區才能玩,就如同我們的服務例項,最終也是分佈在各個節點上。 注意:叢集建立完畢之後,可以新增已有的節點,也就是已購買的伺服器,不過,作業系統必須一致!如果不一致,新增已有節點時可以自動重置該伺服器的作業系統。   建立介面如下所示: 其中,如果CIDR顯示衝突,我們就改到不衝突為止。 節點這塊,大家可以選擇購買新的主機或者選擇已有主機,這裡就不多介紹了。

建立名稱空間和映象

這裡我們需要了解下映象倉庫。什麼是映象倉庫?映象倉庫就是用於存放Docker映象的倉庫,而Docker映象用於部署容器服務,每個映象有特定的唯一標識(映象的Registry地址+映象名稱+映象Tag)。 除了Docker官方提供了Docker Hub官方映象倉庫之外,各大雲廠商往往也提供了自己的映象倉庫,比如騰訊雲的映象倉庫是TencentHub。如果我們要獲得最佳的體驗,那麼使用雲端產品時,我們建議將Docker映象推送到該雲產品的映象倉庫,這樣映象拉取的延遲更小,支援粒度以及可用性更高。   注意:此步驟不是必須的,使用雲端產品,我們依然可以使用官方映象和第三方公共映象。   在本篇教程,我們講解使用TencentHub,也就是騰訊雲的映象倉庫。在容器服務的管理頁,我們就可以看到入口: 首先,我們需要建立名稱空間和映象。這裡,我們進入【我的映象】頁面,先來建立名稱空間。

建立名稱空間

名稱空間的建立比較簡單: 名稱空間大家可以理解為目錄或者字首,起一定的分類和約束作用,大家可以使用公司的名稱或者自己心中神往的詞彙,只要易於理解就行。名稱空間OK之後,我們就需要建立映象:

建立映象

新建頁面如下所示: 整個建立過程其實和我們在Github上建立一個程式碼庫非常類似,只是這裡介面的呈現不夠友好(先把產品經理打一頓)。我們在建立程式碼庫的時候,也是需要填寫路徑(名稱空間)和專案名稱(映象名稱),如下所示: 通過程式碼庫的類比,相信你能夠更好的理解映象倉庫。

建立服務

映象有了,那麼接下來就可以建立服務了,相當於是把我們的程式碼丟到web伺服器上跑起來。服務很易於理解,比如資料庫服務、web服務等等。 騰訊雲容器服務的建立過程如下所示:
  • 基本設定
         服務名稱、容器名稱我們建議和映象名稱保持一致,由於有些命名約束,比如“.”需要改成“ _” )。

 

  • 部署設定
我們推薦使用存活檢查和就緒檢查,啟動延時最好不要設為0,例項數量大家可以根據需要改為自動調節,比如根據CPU的使用率來彈性擴充套件。

  • 訪問設定
提供公網訪問,埠可以設定成80。如果需要提供https,那麼還需要開放443埠,對於某些僅需內網訪問的服務,建議大家不要開啟公網埠。 服務建立完成之後,我們希望映象在推送之後,能夠自動觸發服務更新。因此,我們還需要配置映象觸發器。

配置映象觸發器

映象觸發器可以在每次生成新的Tag(映象版本)時,自行執行動作,如:自動更新使用該映象倉庫的服務 我們可以通過【我的映象】頁面,點選剛新增的映象名稱,進入詳情頁,然後點選【觸發器】tab頁來開啟觸發器管理頁面。

點選【新增觸發器】按鈕可以來建立觸發器。相關配置如下所示: 我們需要選擇對應的容器服務。我們推薦使用全部觸發這個觸發條件,大家也可以根據自己的需求設定指定Tag觸發,比如針對生產、測試和開發環境。

推送映象

觸發器設定好了,也就是整個水管都鋪設好了,只要開啟水龍頭就可以開閘放水了。對於我們這裡,這個水指的就是映象。我們只需將我們的映象推送到騰訊雲映象倉庫,即可自動完成整個服務部署流程。 映象推送的方式有很多,比如通過CI工具構建和推送,也可以通過指令碼來推送已有的映象。這裡,我們將介紹通過指令碼來推送映象。 核心指令碼程式碼為: docker login --username {使用者名稱} --password {密碼} ccr.ccs.tencentyun.com docker push {映象名稱}:{映象版本} 注意:ccr.ccs.tencentyun.com為騰訊倉庫的地址。username為騰訊雲賬號Id,密碼為倉庫密碼。 如果忘記密碼,可以在此處重置: Magicodes.Admin框架提供了騰訊雲推送指令碼,相關引數如下所示: 一般情況下,我們僅需提供預設的配置即可,即配置tencentyun.config即可:

相關推薦

Docker最全教程——從理論實戰( Docker最全教程——從理論實戰() Docker最全教程——從理論實戰(二) Docker最全教程——從理論實戰( Docker最全教程——從理論實戰( Docker最全教程——從理論實戰( Docker最全教程——從理論實戰

在本系列教程中,筆者希望將必要的知識點圍繞理論、流程(工作流程)、方法、實踐來進行講解,而不是單純的為講解知識點而進行講解。也就是說,筆者希望能夠讓大家將理論、知識、思想和指導應用到工作的實際場景和實踐之中,而不是拿著字典寫文章,抱著寶典寫程式碼。至於很多具體的語法、技術細節,除了常用的知識點,筆者更希望大家

Docker教程——理論實戰 Docker教程——理論實戰

Docker最全教程——從理論到實戰(五) 執行 Docker 應用程式 如果應用程式只有一個容器,則可通過將其部署到 Docker 主機(虛擬機器或物理伺服器)來執行該程式。 但如果應用程式包含多項服務,則可使用單個 CLI 命令 (docker-compose up) 或使用 Visual S

Docker最全教程——從理論實戰( Docker最全教程——從理論實戰() Docker最全教程——從理論實戰(二) Docker最全教程——從理論實戰( Docker最全教程——從理論實戰( Docker最全教程——從理論實戰( Docker最全教程——從理論實戰

在本系列教程中,筆者希望將必要的知識點圍繞理論、流程(工作流程)、方法、實踐來進行講解,而不是單純的為講解知識點而進行講解。也就是說,筆者希望能夠讓大家將理論、知識、思想和指導應用到工作的實際場景和實踐之中,而不是拿著字典寫文章,抱著寶典寫程式碼。至於很多具體的語法、技術細節,除了常用的知識點,筆者更希望大家

Docker教程——理論實戰 Docker教程——理論實戰() Docker教程——理論實戰 Docker教程——理論實戰 Docker教程——理論實戰

原文: Docker最全教程——從理論到實戰(五) 往期內容連結 Docker最全教程——從理論到實戰(一) Docker最全教程——從理論到實戰(二) Docker最全教程——從理論到實戰(三) Docker最全教程——從理論到實戰(四)   本篇教程持續編寫了3個星期左右並且一直在

Docker最全教程——從理論實戰(六) Docker最全教程——從理論實戰() Docker最全教程——從理論實戰(二) Docker最全教程——從理論實戰( Docker最全教程——從理論實戰( Docker最全教程——從理論實戰(

原文: Docker最全教程——從理論到實戰(六) 託管到騰訊雲容器服務 託管到騰訊雲容器服務,我們的公眾號“magiccodes”已經發布了相關的錄屏教程,大家可以結合本篇教程一起查閱。   自建還是託管? 在開始之前,我們先來討論一個問題——是自建容器服務還是託管到雲容

Docker最全教程之使用Tencent Hub來完成CI(九 Docker最全教程——從理論實戰() Docker最全教程——從理論實戰(二) Docker最全教程——從理論實戰( Docker最全教程——從理論實戰( Docker最全教程——從理論實戰( Docker最

原文: Docker最全教程之使用Tencent Hub來完成CI(九) 使用Tencent Hub來完成CI 關於Tencent Hub Tencent Hub是騰訊出品的DevOps服務。主要提供多儲存格式的版本管理,支援Docker Image、Binary、Helm Charts 等多種型別檔案

Node.js入門到實戰React頁紙總結很大的頁紙

一、React React是一個JavaScript庫,是由FaceBook和Instagram開發的,主要用於使用者建立圖形化介面。 由於 React 的設計思想極其獨特,屬於革命性創新,效能出眾,程式碼邏輯卻非常簡單。所以,越來越多的人開始關注和使用,認為它可能是

Node.js入門到實戰ECMAScript6頁紙總結很大的頁紙

一、ES5/ES6和babel ECMAScript5,即ES5,是ECMAScript的第五次修訂,於2009年完成標準化,現在的瀏覽器已經相當於完全實現了這個標準。 ECMAScript6,即ES6,也稱ES2015,是ECMAScript的第六次修訂,於2015

Shiro框架入門到實戰程式碼springMVC結合Shiro實現許可權驗證

LoginController @Controller public class LoginController { @RequestMapping("gologin.html") p

壹開始 [ Ids4實戰 ] 之 ║ 統一角色管理

前言 書接上文,咱們在上週,通過一篇《思考》 性質的文章,和很多小夥伴簡單的討論了下,如何統一同步處理角色的問題,眾說紛紜,這個我一會兒會在下文詳細說到,而且我最終也定稿方案了。所以今天咱們就大刀闊斧的開始遷移之路,這個 IdentityServer4 專案也是要儘快的完結,因為第六個系列《設計模式》已經開

0 開始的微服務架構:代碼給你,看如何用Docker支撐微服務

這一 復用 微軟 .com 擴展 版本發布 生產 通信 ibm 很好的一篇文章,全面、系統。 雖然已經紅了很久,但是“微服務架構”正變得越來越重要,也將繼續火下去。各個公司與技術人員都在分享微服務架構的相關知識與實踐經驗,但我們發現,目前網上的這些相關文章中,要麽上來就

spring cloud實戰與思考 微服務之間通過fiegn上傳組文件

ets inf str ceo iter protected let pan ins 需求場景:   用戶調用微服務1的接口上傳一組圖片和對應的描述信息。微服務1處理後,再將這組圖片上傳給微服務2進行處理。各個微服務能區分開不同的圖片進行不同處理。   上一篇博客已經討

Docker實戰編寫Dockerfile

curl 進行 () hostname 添加文件 iso -name 默認 數據卷 一、創建Dockerfile文件 首先,需要創建一個目錄來存放 Dockerfile 文件,目錄名稱可以任意,在目錄裏創建Dockerfile文件: 二、Dockerfile 基本框架 D

docker零開始堆棧初體驗,stacks

開始 services 信息 工作 run cer cal tail int 先決條件 安裝Docker 1.13或更高版本。 獲取Docker Compose,請參考第三節 按照第四節中的描述獲取Docker Machine。 在第二節中了解如何創建容器。

docker零開始網絡null網絡

http time info 網絡連接 null clas oot 連接 mage 禁用容器的網絡連接 預計閱讀時間: 1分鐘 如果要完全禁用容器上的網絡堆棧,可以--network none在啟動容器時使用該標誌。在容器內,僅創建環回設備。以下示例說明了這一點。 1

python手記:requests寫爬蟲實戰:翻譯器

人生不易且無趣,一起找點樂子吧。歡迎評論,和文章無關也可以。       有了前兩篇文章做基礎,我們來實戰,用爬蟲來實現翻譯器。 我的瀏覽器是360的,一般搜尋“翻譯”的時候,跳出來的都是360翻譯。like that: 寫程式碼前分析

Docker實戰Docker安裝Redis

Docker安裝Redis 初次使用Docker安裝各種環境,果然是一堆坑啊,坑,坑,坑,坑死我了。。 大概步驟: 上傳Redis到宿主機,或者在宿主機中下載 編寫Dockerfile構建映象 編寫supervisor配置檔案 build和run

Docker實戰Docker安裝Hive環境

Docker安裝Hive環境 Hive安裝 # Hive必須執行在Hadoop之上,則需要先安裝Hadoop環境,而且還需要MySQL資料庫,具體Hadoop安裝請參考上一篇文章,我們這裡繼承上一篇已經安裝好的Hadoop映象 # 下載Hive $

Docker零基礎到懂一點實踐教程

Docker客戶端和守護程序 Docker的CS模式 在Docker的實現機制中,有兩個重要的概念,“Docker客戶端”和“Docker守護程序”。“Docker守護程序”執行在宿主計算機上,在CS模式中充當Server的角色,它為“Docker客戶端