天天看點

看雲栖說雲栖 —— 容器、雲原生、微服務

“基礎設施的雲化、核心技術的網際網路化、應用的資料化和智能化”是雲的三大趨勢和核心價值所在。

—— 行癫觀點

在年初的阿裡雲北京峰會上,阿裡雲新任掌門行癫張建峰的首次亮相,提出了更新以後的阿裡雲智能意味着:

  • 基礎設施的雲化
  • 核心技術的網際網路化
  • 應用的資料化和智能化

前面的《看雲栖說雲栖》講的大多都是和基礎設施的雲化相關的内容,而這次的内容還和核心技術的網際網路化有關。

本文内容提取自2019杭州雲栖大會《容器專場》、《雲原生開發者峰會》。

先從《容器專場》開始,Kubernetes已經成為雲原生應用底層平台的事實标志,當下網際網路核心技術體系的基礎平台。今天再去談容器,講的多半還是和Kubernetes有關的内容。在這次雲栖大會上,阿裡雲釋出了阿裡雲Kubernetes服務(ACK)2.0版,這個版本的“新”展現在:

  • 新基石、ACK實作了全球化部署,并且支援邊緣節點,在ACK2.0中內建了對邊緣計算節點的管控、打通了混合雲架構,傳遞效率3倍提升。
  • 新算力、可在一分鐘内實作上千個節點的伸縮、支援GPU等異構計算資源、提供沙箱容器選項,增加容器平台安全性。
  • 新生态、內建了容器應用市場,基于ACK的應用部署更加便捷,提供合作夥伴計劃助力生态建設。

在容器專場的最後,是由螞蟻金服的專家和阿裡雲的專家介紹了安全容器的關鍵技術、kata-container、和阿裡雲的沙箱容器。目前,沙箱容器已經在阿裡雲ACK服務上線提供公測,适合對容器平台安全有更高要求的客戶使用,在建立叢集時勾選沙箱容器選項即可。

在《雲原生開發者峰會》,阿裡巴巴介紹了自己的雲原生實踐:

  • 阿裡巴巴容器叢集節點超十萬、容器組超百萬,可能已經是全球最大規模的雲原生應用實踐者了。
  • 因為引入雲原生技術,雙11 IT成本下降75%,日常IT成本下降30%。
  • 目前整個阿裡經濟體都運作在阿裡雲上。

作為CNCF(雲原生計算基金會)的9位TOC(技術監督委員會成員)之一,阿裡雲李響做了《阿裡巴巴的雲原生之路》的演講。阿裡選擇雲原生的理由可以總結為三個方面:

  • 資源效率、利用容器可以提升資源使用率,提高排程效率,尤其是在阿裡巴巴大量使用了離線業務和線上業務混合部署的架構,利用線上業務系統的閑置時段進行離線計算。
  • 開發效率、程式開發人員和運維人員利用容器和編排系統可以更好的協作,更易于實作CI/CD,基于服務網格可以讓多語言環境的微服務系統更易于建構和運維。
  • 标準與開放、基于共同的開放标準,行業生态夥伴更容易進行協同技術演進。

什麼是CNCF:雲原生計算基金會建構可持續的生态系統,并培育社群,以支援雲原生開源軟體的增長和健康。

CNCF下的開源項目包括:

  • Kubernetes :叢集中管理跨多台主機容器化應用的開源系統;
  • Prometheus :專注于時間序列資料,為用戶端依賴及第三方資料消費提供廣泛內建支援的開源監控解決方案;
  • OpenTracing:與廠商無關的分布式追蹤開源标準;
  • Fluentd:建立統一日志層的開源資料收集器。
  • Linkerd:為微服務提供可靠性支援、自動化負載均衡、服務發現和運作時可恢複性的開源“服務網格”項目;
  • gRPC:現代化高性能開源遠端調用架構;
  • CoreDNS:快速靈活的建構 DNS 伺服器的方案;
  • containerd:将容器運作時及其管理功能從 Docker Daemon 剝離的鏡像管理和容器執行技術;
  • rkt:幫助開發者打包應用和依賴包,簡化搭環境等部署工作,提高容器安全性和易用性的容器引擎。
其實不僅這些項目,符合CNCF理念的開源項目還有很多,CNCF将這些項目整合成了一張全景圖: https://landscape.cncf.io/images/landscape.png
看雲栖說雲栖 —— 容器、雲原生、微服務

(全景圖縮小版)

阿裡雲結合自身的使用實踐,基于Kubernetes開源了OpenKruise項目,提供一組額外的Kubernetes控制器:

  • BroadcastJob Controller、用于把Job跑在每一個節點上。類似于DaemonSet會在每一個節點上去運作,差別是Job會結束而Daemon會一直運作并占用資源。
  • Sidecar Set、類似于Istio的Sidecar 容器自動注入,便于管理人員将日志、監控等一些業務無關的Sidecar容器的管理集中統一起來。
  • Advanced StatefullSet Controller、提供StatefullSet的原地更新能力,保留pod而隻對容器鏡像進行更新,避免銷毀pod重建對應用網絡拓撲造成的沖擊。

最後的内容是和微服務相關,阿裡雲資深技術專家司徒放(姬風)做了《微服務遇見雲原生》的演講。姬風認為微服務架構走向雲原生有三個關鍵:

  • 在kubernetes上運作、kubernets已經是雲原生的事實标準、kubernetes天然為微服務設計、kubernetes為分布式、可彈性擴縮容應用提供運維支援。
  • 基于Service Mesh治理、Service Mesh提供多語言異構技術棧的統一監控、智能、Service Mesh通用組建與業務邏輯完全解耦,獨立更新、但Service Mesh尚未完全成熟,待提升規模化能力、需進一步提升相容性、性能。
  • 應用Serverless化、Serverless 不等于FaaS,阿裡雲應用引擎SAE在不需要對應用作大量修改的同時即可享受到Serverless極速擴容和成本降低的好處。

基于Kubernetes來建構微服務,阿裡雲可以內建的服務産品包括:

  • Istio & Envoy、Service Mesh的事實标準Istio 和Envoy已經是阿裡雲ACK(阿裡雲Kubernetes) 服務的内置元件。
  • 日志服務SLS、阿裡雲日志服務提供事件安全審計、業務日志收集、ingress(kubernetes的服務路由元件)大盤。
  • 應用實時監控ARMS、ARMS可與jaeger/Zipkin/Skywalking等鍊路追蹤服務內建;Prometheus作為下一代的開源監控系統,提供了Kubernetes,資料庫,消息隊列,基礎架構等各類技術元件的監控能力 ,ARMS提供Prometheus全托管式雲服務,無需安裝運維;Grafana 是一個大規模名額資料的可視化展現,是網絡架構和應用分析中最流行的時序資料展示工具,提供了包括Kubernetes,主機,MySql,kafaka等各類技術的監控大盤,在阿裡雲上可以一鍵開啟,并支援導入現有大盤資料。
  • 鍊路追蹤、阿裡雲鍊路追蹤服務支援OpenTracing API,使用阿裡雲鍊路追蹤服務可比自行建構節省80%成本。
  • 微服務引擎MSE、微服務引擎 MSE(Microservice Engine )是微服務注冊中心和配置管理的全托管式平台,提供高可用且免運維的服務注冊和配置管理叢集,如 ZooKeeper、Nacos 和 Eureka 等。
  • 企業級分布式應用EDAS、同時支援ECS和Kubernetes應用托管、支援Dubbo/Spring Cloud無侵入的微服務治理。
  • 應用高可用AHAS服務、Sentinel是阿裡雲開源的限流降級引擎,AHAS提供Sentinel的雲上版本,除了限流降級AHAS還提供架構感覺和故障演練的功能。
  • 應用配置管理ACM、應用配置管理 ACM(Application Configuration Management)前身為淘寶内部配置中心 Diamond,現已作為 Nacos 的配置中心子產品開源。

什麼是Service Mesh 服務網格?按照服務網格概念的提出者Willian Morgan(Linker 的 CEO)的定義:

A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application. In practice, the service mesh is typically implemented as an array of lightweight network proxies that are deployed alongside application code, without the application needing to be aware.

服務網格是一個用于處理服務間通信的基礎設施層,它負責為建構複雜的雲原生應用傳遞可靠的網絡請求。在實踐中,服務網格通常實作為一組和應用程式部署在一起的輕量級的網絡代理,但對應用程式來說是透明的。

Istio 作為最流行的ServiceMesh 項目,通過自動注入的Sidecar容器來解決服務路由、安全認證、監控排程等非常重要又和業務本身無關的任務。Istio最初隻支援Kubernetes。

看雲栖說雲栖 —— 容器、雲原生、微服務

(藍色部分即為SideCar容器)