雲計算

非容器應用與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可觀測性實踐

WorkloadEntry是k8s集群與ecs集群通信的基礎,本系列的第1篇將通過兩個實踐示例,把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容器化遷移訴求的同學,能夠通過本系列的各篇非容器應用網格化實踐,完成如下圖所示的遷移過程。

0-overview.png

聲明

  1. 本系列前提是已經創建了一個ACK集群、一個ECS實例、一個ASM實例,且VM與ACK集群在同一個VPC和安全組內。可在本文基礎上參考相關文檔實現跨安全組和VPC的需求。出於穩定性和性價比考慮,建議儘量在同一VPC和安全組內實現。
  2. 本系列示例沒有啟用DNS組件。可在本文基礎上使用DNS組件代替手動配置hosts。
  3. 本系列只將配置了WorkloadEntry的VM視為網格化,手動配置ServiceEntry但沒有配置WorkloadEntry的VM不視為網格化。

Leave a Reply

Your email address will not be published. Required fields are marked *