Istio新架構揭秘:環境化Mesh

帶你聊技術發表於2023-11-29

來源:小技術君

Istio新架構揭秘:環境化Mesh

自問世以來,Istio因其使用Sidecar(可程式設計代理與應用容器一同部署)而備受認可。這種架構選擇使Istio使用者能夠享受其好處,而無需對其應用進行 drast 改變。這些可程式設計代理,與應用容器緊密部署在一起,因其能夠引入Istio的諸多好處而備受讚譽,同時又無需對應用進行重大更改。但總有改進的空間,現在Istio引入了環境化Mesh,這是其架構的重大演進。

Sidecar模型:優勢和限制

Istio新架構揭秘:環境化Mesh

傳統Istio模型:

Istio在工作負載的Pod中部署Envoy代理作為Sidecar。

Sidecar的優勢:

無需重構應用即可享受Istio的功能。

Sidecar的限制:

1.侵入性: Sidecar需要整合到應用中,影響其Kubernetes Pod規格並重定向Pod流量。這經常導致需要重啟應用Pod。2.資源利用不足: 由於每個Sidecar代理專門分配給其配對的工作負載,資源分配可能導致叢集效率低下。3.流量中斷: Istio的Sidecar可能對一些應用的流量捕獲和HTTP處理造成問題。

環境化Mesh:克服限制

環境化Mesh採用分層方法,分割了Istio的功能:

1.基礎層: 一個安全的覆蓋層,負責路由和確保流量的零信任安全。2.上層: 當使用者需要訪問Istio的廣泛功能時,可以啟用L7處理,而無需改變應用Pod。

這種方法的優勢包括:

允許逐步採用Istio:從無Mesh -> 安全覆蓋層 -> 完整的L7處理。在不同環境模式或帶有Sidecar的工作負載之間實現相容性。

環境化Mesh的工作原理

在Kubernetes叢集的每個節點上都有一個共享代理(ztunnel),負責Mesh內的安全連線。

Istio新架構揭秘:環境化Mesh

Ztunnel僅處理L4流量,將Istio的資料平面與應用關注點分離。當名稱空間啟用環境化模式時,將建立一個零信任覆蓋層(具有mTLS、遙測、認證和L4授權)。對於L7功能,名稱空間可以部署一個或多個基於Envoy的Waypoint代理。這些代理可以根據實時流量需求進行自動縮放。

Istio新架構揭秘:環境化Mesh

安裝環境化Mesh

下載Istio的最新版本,其中包含對環境化Mesh的alpha支援。安裝Kubernetes閘道器CRDs,在大多數Kubernetes叢集上預設未安裝



kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \{ kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd/experimental?ref=v0.8.0" | kubectl apply -f -; }

ambient配置檔案旨在幫助您開始使用環境化Mesh。使用上面下載的istioctl命令,在您的Kubernetes叢集上安裝帶有ambient配置檔案的Istio:


istioctl install --set profile=ambient --set "components.ingressGateways[0].enabled=true" --set "components.ingressGateways[0].name=istio-ingressgateway" --skip-confirmation

✔ 安裝了Istio核心

✔ 安裝了Istiod

✔ 安裝了CNI

✔ 安裝了入口閘道器

✔ 安裝了Ztunnel

✔ 安裝完成

使用以下命令驗證已安裝的元件:




















kubectl get pods -n istio-system
名稱                                     就緒   狀態     重啟次數   年齡
istio-cni-node-n9tcd                     1/1    執行中   0          57
istio-ingressgateway-5b79b5bb88-897lp    1/1    執行中   0          57
istiod-69d4d646cd-26cth                  1/1    執行中   0          67
ztunnel-lr7lz                            1/1    執行中   0          69
kubectl get daemonset -n istio-system
名稱              預期   當前   就緒   最新   可用   節點選擇器           年齡
istio-cni-node    1      1      1     1      1      kubernetes.io/os=linux   70
ztunnel            1      1      1     1      1      kubernetes.io/os=linux   82

安全考慮

環境化Mesh將安全性放在首位:

1.Ztunnel:

儘管是一個共享資源,但ztunnel將其金鑰限制在其節點上的工作負載上,降低風險。

1.Waypoint代理: 這些共享資源被限制在一個服務賬戶中,減少了來自受損代理的潛在傷害。2.Envoy的作用: 憑藉其強大、經過考驗的特性,Envoy被認為比它配對的許多應用更安全。

效能和資源影響

1.資源效率: 環境化Mesh的ztunnel減少了每個工作負載的預留資源。Waypoint代理的動態擴充套件也確保了資源最佳化。2.延遲問題: 雖然有一種看法認為Waypoint代理可能引入延遲,但Istio認為這能夠透過與傳統Sidecar模型相比減少的L7處理來平衡。

Sidecar的未來

環境化Mesh的推出並不意味著Sidecar的結束。它們仍然適用於需要專用資料平面資源的情景,比如合規性或效能調整。Istio將繼續支援Sidecar,確保它們與環境化Mesh和諧共存。

總之,環境化Mesh代表了服務網格架構邁出的一大步,解決了Sidecar模型的一些挑戰,併為使用者提供了更多的靈活性和效率。


  • 系統設計概念系列文章

計算機的層次化架構

每個開發者都應該知道的7個原則

6個系統設計的基本概念

資料庫:系統設計的核心

  • 圖解系列

系統設計中的快取技術:完整指南

關聯式資料庫的全景圖 

Redis 全景解析

當然架構設計、全景圖解系列還有很多,快來關注一起學習吧~

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024922/viewspace-2997842/,如需轉載,請註明出處,否則將追究法律責任。

相關文章