天天看點

非容器應用與K8s工作負載的服務網格化實踐-序

本系列将包含如下篇章:

  1. ASM-VM-PROXY的安裝
  2. 基于ASM的Workload Entry實踐
  3. 基于ASM的POD和VM互訪實踐-HTTP協定篇
  4. 基于ASM的POD和VM互訪實踐-GRPC協定篇
  5. 基于ASM的POD和VM混合流量轉移實踐
  6. 基于ASM的VM應用動态落遷實踐
  7. 基于ASM的POD和VM可觀測性實踐

ASM-VM-PROXY是虛拟機網格化的通道,第1篇将介紹ASM-VM-PROXY的安裝和使用。

WorkloadEntry是k8s叢集與ecs叢集通信的基礎,本系列的第2篇将通過兩個實踐示例,把WorkloadEntry的用途和作用展示清楚,為後續pod和vm的互訪、pod和vm混合場景中的流量轉移打好理論基礎。

接下來分别介紹基于http/grpc通信協定的POD和VM互訪。各種程式設計語言實作的服務普遍通過http協定提供服務和彼此通信,是以http篇的目的是希望展示ecs網格化過程中最經典的場景。grpc篇的目的有兩個,一個是單純地展示基于grpc通信協定服務的網格化方案,另一個是希望為ecs上使用了其他服務發現方式的遺留服務,提供一種更簡單的網格化思路——使用k8s作為唯一服務發現的模式,代替複雜且實作成本頗高的多服務發現模式。這種方案最大的好處是讓envoy不被修改,安靜且優雅地保持與社群發展一緻。

POD和VM混合的場景是非容器應用的網格化最常見的場景,解決了這種場景下的流量轉移,會讓使用者有信心将跑在ecs上的非容器應用進行網格化。雖然很多使用者意願上早就想網格化,但沒有一篇這樣的示例,會讓使用者多少有些不安。這是第4篇的初衷,這篇也是本系列的核心篇章。

VM應用動态落遷是指動态地将非容器服務加入和移出服務網格。第6篇的目的是展示如何對非容器應用進行流量控制、藍綠部署,甚至最終将全部非容器應用都容器化,且這些熱操作都是流量無損的。

第7篇可觀測性的目的是展示非容器應用如何像POD中的服務一樣,在網格化後具備全鍊路追蹤、監控等能力的。

希望有kubernetes容器化遷移訴求的同學,能夠通過本系列的各篇非容器應用網格化實踐,完成如下圖所示的遷移過程。

非容器應用與K8s工作負載的服務網格化實踐-序

聲明

  1. 本系列前提是已經建立了一個ACK叢集、一個ECS執行個體、一個ASM執行個體,且VM與ACK叢集在同一個VPC和安全組内。可在本文基礎上參考相關文檔實作跨安全組和VPC的需求。出于穩定性和成本效益考慮,建議盡量在同一VPC和安全組内實作。
  2. 本系列示例沒有啟用DNS元件。可在本文基礎上使用DNS元件代替手動配置hosts。
  3. 本系列隻将配置了WorkloadEntry的VM視為網格化,手動配置ServiceEntry但沒有配置WorkloadEntry的VM不視為網格化。