容器生态系统 (续) - 每天5分钟玩转容器技术(3)
容器生態(tài)系統(tǒng)包含核心技術(shù)、平臺(tái)技術(shù)和支持技術(shù)三個(gè)方面。上一節(jié)我們討論了核心技術(shù),今天討論另外兩個(gè)部分。
容器平臺(tái)技術(shù)
容器核心技術(shù)使得容器能夠在單個(gè) host 上運(yùn)行。而容器平臺(tái)技術(shù)能夠讓容器作為集群在分布式環(huán)境中運(yùn)行。
容器平臺(tái)技術(shù)包括容器編排引擎、容器管理平臺(tái)和基于容器的 PaaS。
容器編排引擎
基于容器的應(yīng)用一般會(huì)采用微服務(wù)架構(gòu)。在這種架構(gòu)下,應(yīng)用被劃分為不同的組件,并以服務(wù)的形式運(yùn)行在各自的容器中,通過(guò) API 對(duì)外提供服務(wù)。為了保證應(yīng)用的高可用,每個(gè)組件都可能會(huì)運(yùn)行多個(gè)相同的容器。這些容器會(huì)組成集群,集群中的容器會(huì)根據(jù)業(yè)務(wù)需要被動(dòng)態(tài)地創(chuàng)建、遷移和銷毀。
大家可以看到,這樣一個(gè)基于微服務(wù)架構(gòu)的應(yīng)用系統(tǒng)實(shí)際上是一個(gè)動(dòng)態(tài)的可伸縮的系統(tǒng)。這對(duì)我們的部署環(huán)境提出了新的要求,我們需要有一種高效的方法來(lái)管理容器集群。而這,就是容器編排引擎要干的工作。
所謂編排(orchestration),通常包括容器管理、調(diào)度、集群定義和服務(wù)發(fā)現(xiàn)等。通過(guò)容器編排引擎,容器被有機(jī)的組合成微服務(wù)應(yīng)用,實(shí)現(xiàn)業(yè)務(wù)需求。
docker swarm 是 Docker 開發(fā)的容器編排引擎。
kubernetes 是 Google 領(lǐng)導(dǎo)開發(fā)的開源容器編排引擎,同時(shí)支持 Docker 和 CoreOS 容器。
mesos 是一個(gè)通用的集群資源調(diào)度平臺(tái),mesos 與 marathon 一起提供容器編排引擎功能。
以上三者是當(dāng)前主流的容器編排引擎。
容器管理平臺(tái)
容器管理平臺(tái)是架構(gòu)在容器編排引擎之上的一個(gè)更為通用的平臺(tái)。通常容器管理平臺(tái)能夠支持多種編排引擎,抽象了編排引擎的底層實(shí)現(xiàn)細(xì)節(jié),為用戶提供更方便的功能,比如 application catalog 和一鍵應(yīng)用部署等。
Rancher 和 ContainerShip 是容器管理平臺(tái)的典型代表。
基于容器的 PaaS
基于容器的 PaaS 為微服務(wù)應(yīng)用開發(fā)人員和公司提供了開發(fā)、部署和管理應(yīng)用的平臺(tái),使用戶不必關(guān)心底層基礎(chǔ)設(shè)施而專注于應(yīng)用的開發(fā)。
Deis、Flynn 和 Dokku 都是開源容器 PaaS 的代表。
容器支持技術(shù)
下面這些技術(shù)被用于支持基于容器的基礎(chǔ)設(shè)施。
容器網(wǎng)絡(luò)
容器的出現(xiàn)使網(wǎng)絡(luò)拓?fù)渥兊酶觿?dòng)態(tài)和復(fù)雜。用戶需要專門的解決方案來(lái)管理容器與容器,容器與其他實(shí)體之間的連通性和隔離性。
docker network 是 Docker 原生的網(wǎng)絡(luò)解決方案。除此之外,我們還可以采用第三方開源解決方案,例如 flannel、weave 和 calico。不同的方案設(shè)計(jì)和實(shí)現(xiàn)方式不同,各有優(yōu)勢(shì)和特定,我們可以根據(jù)實(shí)際需要來(lái)選型。
服務(wù)發(fā)現(xiàn)
動(dòng)態(tài)變化是微服務(wù)應(yīng)用的一大特點(diǎn)。當(dāng)負(fù)載增加時(shí),集群會(huì)自動(dòng)創(chuàng)建新的容器;負(fù)載減小,多余的容器會(huì)被銷毀。容器也會(huì)根據(jù) host 的資源使用情況在不同 host 中遷移,容器的 IP 和端口也會(huì)隨之發(fā)生變化。
在這種動(dòng)態(tài)的環(huán)境下,必須要有一種機(jī)制讓 client 能夠知道如何訪問(wèn)容器提供的服務(wù)。這就是服務(wù)發(fā)現(xiàn)技術(shù)要完成的工作。
服務(wù)發(fā)現(xiàn)會(huì)保存容器集群中所有微服務(wù)最新的信息,比如 IP 和端口,并對(duì)外提供 API,提供服務(wù)查詢功能。
etcd、consul 和 zookeeper 是服務(wù)發(fā)現(xiàn)的典型解決方案。
監(jiān)控
監(jiān)控對(duì)于基礎(chǔ)架構(gòu)非常重要,而容器的動(dòng)態(tài)特征對(duì)監(jiān)控提出更多挑戰(zhàn)。
針對(duì)容器環(huán)境,已經(jīng)涌現(xiàn)出很多監(jiān)控工具和方案。
docker ps/top/stats 是 Docker 原生的命令行監(jiān)控工具。除了命令行,Docker 也提供了 stats API,用戶可以通過(guò) HTTP 請(qǐng)求獲取容器的狀態(tài)信息。
sysdig、cAdvisor/Heapster 和 Weave Scope 是其他開源的容器監(jiān)控方案。
數(shù)據(jù)管理
容器經(jīng)常會(huì)在不同的 host 之間遷移,如何保證持久化數(shù)據(jù)也能夠動(dòng)態(tài)遷移,是 Flocker 這類數(shù)據(jù)管理工具提供的能力。
日志管理
日志為問(wèn)題排查和事件管理提供了重要依據(jù)。
docker logs 是 Docker 原生的日志工具。而 logspout 對(duì)日志提供了路由功能,它可以收集不同容器的日志并轉(zhuǎn)發(fā)給其他工具進(jìn)行后處理。
安全性
對(duì)于年輕的容器,安全性一直是業(yè)界爭(zhēng)論的焦點(diǎn)。
OpenSCAP 能夠?qū)θ萜麋R像進(jìn)行掃描,發(fā)現(xiàn)潛在的漏洞。
本教程覆蓋的知識(shí)范圍
前面我們已經(jīng)鳥瞰了整個(gè)容器生態(tài)系統(tǒng),對(duì)容器所涉及的技術(shù)體系有了全面的認(rèn)識(shí)。那我們這本教程會(huì)討論其中的哪些內(nèi)容呢?
會(huì)覆蓋容器生態(tài)系統(tǒng) 91.6% 的技術(shù)!具體請(qǐng)參考第一篇中的 “覆蓋內(nèi)容”部分,這里就不再贅述了。
下一節(jié)開始實(shí)戰(zhàn),運(yùn)行我們的第一個(gè)容器。
總結(jié)
以上是生活随笔為你收集整理的容器生态系统 (续) - 每天5分钟玩转容器技术(3)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 20145209 2016-2017-2
- 下一篇: 【BZOJ2662】【BeiJing w