發布時間: 2018-02-25 22:42:47
容器平臺技術
容器核心技術使得容器能夠在單個 host 上運行。而容器平臺技術能夠讓容器作為集群在分布式環境中運行。
容器平臺技術包括容器編排引擎、容器管理平臺和基于容器的PaaS。
容器編排引擎
基于容器的應用一般會采用微服務架構。在這種架構下,應用被劃分為不同的組件,并以服務的形式運行在各自的容器中,通過 API
對外提供服務。為了保證應用的高可用,每個組件都可能會運行多個相同的容器。這些容器會組成集群,集群中的容器會根據業務需要被動態地創建、遷移和銷毀。
大家可以看到,這樣一個基于微服務架構的應用系統實際上是一個動態的可伸縮的系統。這對我們的部署環境提出了新的要求,我們需要有一種高效的方法來管理容器集群。而這,就是容器編排引擎要干的工作。
所謂編排(orchestration),通常包括容器管理、調度、集群定義和服務發現等。通過容器編排引擎,容器被有機的組合成微服務應用,實現業務需求。
docker swarm 是 Docker 開發的容器編排引擎。
kubernetes是 Google 領導開發的開源容器編排引擎,同時支持 Docker 和 CoreOS 容器。
apache mesos 是一個通用的集群資源調度平臺,mesos 與 marathon 一起提供容器編排引擎功能。
以上三者是當前主流的容器編排引擎。
容器管理平臺
容器管理平臺是架構在容器編排引擎之上的一個更為通用的平臺。通常容器管理平臺能夠支持多種編排引擎,抽象了編排引擎的底層實現細節,為用戶提供更方便的功能,比如application catalog 和一鍵應用部署等。
Rancher 和 ContainerShip 是容器管理平臺的典型代表。
基于容器的 PaaS
為微服務應用開發人員和公司提供了開發、部署和管理應用的平臺,使用戶不必關心底層基礎設施而專注于應用的開發。
Deis、Flynn和 Dokku 都是開源容器 PaaS 的代表。
容器支持技術
下面這些技術被用于支持基于容器的基礎設施。
容器網絡
容器的出現使網絡拓撲變得更加動態和復雜。用戶需要專門的解決方案來管理容器與容器,容器與其他實體之間的連通性和隔離性。
docker network 是 Docker 原生的網絡解決方案。除此之外,我們還可以采用第三方開源解決方案,
例如flannel、weave 和 calico。不同的方案設計和實現方式不同,各有優勢和特定,我們可以根據實際需要來選型。
服務發現
動態變化是微服務應用的一大特點。當負載增加時,集群會自動創建新的容器;負載減小,多余的容器會被銷毀。容器也會根據
host 的資源使用情況在不同 host 中遷移,容器的 IP 和端口也會隨之發生變化。
在這種動態的環境下,必須要有一種機制讓client 能夠知道如何訪問容器提供的服務。這就是服務發現技術要完成的工作。
服務發現會保存容器集群中所有微服務最新的信息,比如IP 和端口,并對外提供 API,提供服務查詢功能。
etcd、consul和 zookeeper 是服務發現的典型解決方案。
監控
監控對于基礎架構非常重要,而容器的動態特征對監控提出更多挑戰。
針對容器環境,已經涌現出很多監控工具和方案。
docker ps/top/stats 是 Docker 原生的命令行監控工具。
除了命令行,Docker 也提供了 stats API,用戶可以通過 HTTP 請求獲取容器的狀態信息。
sysdig、cAdvisor/Heapster和 Weave Scope 是其他開源的容器監控方案。
數據管理
容器經常會在不同的host 之間遷移,如何保證持久化數據也能夠動態遷移,是 Flocker 這類數據管理工具提供的能力。
日志管理
日志為問題排查和事件管理提供了重要依據。
docker logs是 Docker 原生的日志工具。
而 logspout對日志提供了路由功能,它可以收集不同容器的日志并轉發給其他工具進行后處理。
安全性
對于年輕的容器,安全性一直是業界爭論的焦點。
OpenSCAP
能夠對容器鏡像進行掃描,發現潛在的漏洞。