1. 程式人生 > >第五章 雲原生與容器技術

第五章 雲原生與容器技術

con title 狀態 顯式 k8s margin app bubuko cati

第一節 獨角獸成功秘訣

成功秘訣

·Speed of innovation-天下武功,唯快不破

·Always-available services-隨時、隨地可用

·Web scale-從0到1,快速擴展

·Mobile-centric user experiences-移動為王又快又好!

第二節 雲原生和現代應用12範式

現代應用的十二範式(The Twelve-Factor App)

1.基準代碼:一份基準代碼,多份部署。基準代碼和應用之間總是保持一一對應的關系。所有部署的基準代碼相同,但每份部署可以使用其不同的版本。

2.依賴:顯式聲明依賴關系。應用程序一定通過依賴清單,確切地聲明所有依賴項。

3.配置:在環境中存儲配置。將應用的配置存儲於環境變量中。環境變量可以非常方便地在不同的部署間做修改,卻不動一行代碼。

4.後端服務:把後端服務當作附加資源。應用不會區別對待本地或第三方服務。對應用程序而言,兩種都是附加資源。

5.構建,發布,運行:嚴格區分構建,發布,運行這三個步驟。

6.進程:以一個或多個無狀態進程運行應用。應用的進程必須無狀態且無共享。

7.端口綁定:通過端口綁定提供服務。應用完全自我加載而不依賴任何網絡服務器就可以創建一個面向網絡的服務。

8.並發:通過進程模型進行擴展。開發人員可以運用這個模型去設計應用架構,將不同工作分配給不同的進程類型。

9.易處理:快速啟動和優雅終止可最大化健壯性。應用的進程是可支配的,意思是說它們可以瞬間開啟或停止。

10.開發環境與線上環境等價:盡可能保持開發、預發布、線上環境相同。應用想要做到持續部署就必須縮小本地與線上差異。

11.日誌:把日誌當作事件流。應用本身考慮存儲自己的輸出流。不應該試圖去寫或者管理日誌文件。

12.管理進程:後臺管理任務當作一次性進程運行。一次性管理進程應該和正常的常駐進程使用同樣的環境。

技術分享圖片

雲原生

·Cloud Native Application

Cloud Native describes the patterns of high performing organizations delivering

software faster,consistently and reliably at scale.

Continuous delivery,DevOps,and Microservices label the why,how and what of

the cloud natives.

·雲原生應用

雲原生描述了高效組織的模式:可快速的,一致的和可靠的規模化交付軟件。

·為什麽:持續交付

·做什麽:微服務

·如何做:DevOps

技術分享圖片

技術分享圖片

持續集成

技術分享圖片


微服務

技術分享圖片

容器

技術分享圖片

第三節 docker成才史

技術分享圖片

技術分享圖片

技術分享圖片

第四節 容器技術基礎

容器技術基礎

Docker包含兩方面的技術

·容器技術

·有效分配與管理理物理理資源

·實現資源隔離

·鏡像技術

·打破“代碼即應用”的觀念

·從系統環境開始,自下而上打包應用

技術分享圖片

技術分享圖片

Docker 組件架構-Docker Engine分析

·Docker Engine是一個Client-Server模型的應用

·Docker Engine 包括以下幾個組件

·服務端(dockerd)

·RESTAPI

·命令行行行工工具(docker cli)

·用戶可以使用用命令行工具來調用API從而實現與服務端的交互,也可以通過接調用API來完成與服務端的交互

技術分享圖片

Docker 組件架構-組件清單

技術分享圖片

Docker 文件系統和Dockerfile

技術分享圖片

FROM ubuntu:15.04

COPY./app

RUN make /app

CMD python /app/app.py

Dockerfile

Docker 網絡模式

技術分享圖片

Docker 存儲驅動對比

技術分享圖片

技術分享圖片

Docker 常用命令說明

#查看docker版本

docker version

#顯示docker系統的信息

docker info

#日誌信息docker logs

#故障檢查

service docker status

#啟動關閉

docker sudo service docker start | stop

#查看當前運行的容器

docker ps

#查看全部容器

docker ps -a

#查看全部容器的id和信息

docker ps -a -q

#查看全部容器占用的空間

docker ps -as

#查看一個正在運行容器進程,支持ps命令參數

docker top

#查看容器的示例id

sudo docker inspect -f {{.ld}}‘ [id]

#檢查鏡像或者容器的參數,默認返回JSON格式

docker inspect

第五節 容器編排與調度

容器編排與調度

·基於容器的應用一般會采用微服務架構。在這種架構下,應用被劃分為不同的組件,並以服務的形式運行在各自的容器中,通過API對外提供服務。為了保證應用的高可用,每個組件都可能會運行多個相同的容器。這些容器會組成集群,集群中的容器會根據業務需要被動態地創建、遷移和銷毀。

·大家可以看到,這樣一個基於微服務架構的應用系統實際上是一個動態的可伸縮的系統。這對我們的部署環境提出了新的要求,我們需要有一種高效的方法來管理容器集群。而這,就是容器編排引擎要幹的工作。

·所謂編排(orchestration),通常包括容器管理、調度、集群定義和服務發現等。通過容器編排引擎,容器被有機的組合成微服務應用,實現業務需求。

技術分享圖片

Docker 編排-Compose & Swarm

技術分享圖片

Kubernetes

Borg-Google的大規模集群管理系統,是k8s理論基礎

技術分享圖片

技術分享圖片

Pod

Container(容器)

Label(標簽)

Replication Controller(復制控制器)

Service(服務)

Node(節點)

Kubernetes Master(K8s 主節點)

CNCF 雲原生計算基金會

CNCF,全稱Cloud Native Computing Foundation(雲原生計算基金會),口號是堅持和整合開源技術來編排容器作為微服務架構的一部分,其作為致力於雲原生應用推廣和普及的一支重要力量,不論您是雲原生應用的開發者、管理者還是研究人員都有必要了解。

CNCF作為一個廠商中立的基金會,致力於GitHub上的快速成長的開源技術的推廣,如Kubernetes、Prometheus、Envoy等,幫助開發人員更快更好的構建出色的產品。

技術分享圖片

Docker與DevOps

技術分享圖片

將應用交付的標準統一到容器上,以標準交付件的形式,實現跨階段的標準化發布流程。

以容器為核心的交付和運維,確保一致的交付件,貫穿開發、測試、運維場景。

第五章 雲原生與容器技術