Istio:服務發現和Pilot的架構機制

大綱

Istio架構&Pilot介紹
Istio服務發現
Istio服務配置
stio服務發現&規則管理與Kubernetes結合
ShowCase

Istio架構&Pilot介紹

Istio架構

Pilot功能

  • 服務發現
  • 服務配置

Istio服務發現

服務發現基本原理
 

a.app 88.88.88.66
a.app 88.88.88.77
a.app 88.88.88.88


b.app 88.88.88.99
b.app 88.88.88.55

SpringCloud的服務(註冊與)發現流程

  • 服務註冊表:如Springcloud中一般Eureka服務;
  • 服務註冊:服務配置文件中配置服務名和本實例地址,實例啓動時自動註冊到服務註冊表;
  • 服務發現:訪問目標服務時連服務註冊表,獲取服務實例列表。根據LB根據策略選擇一個服務實例,建立連接去訪問。

Istio服務發現流程

Istio服務發現流程
  • 服務註冊表: Pilot 從平臺獲取服務發現數據, 並提供統一的服務發現接口。
  • 服務註冊:
  • 服務發現: Envoy 實現服務發現,動態更新負載均衡池。在服務請求時使用對應的負載均衡策略將請求路由到對應的後端。

Pilot服務發現機制的Adapter機制

Istio服務發現實現:基於 Eureka

1. Pilot 實現若干服務發現的接口定義
2. Controller使用EurekaClient來獲取服務列表, 提供轉換後的標準的服務發現接口和數據結構;
3. Discoveryserver基於Controller上維護的服務發現數據, 發佈成gRPC協議的服務供Envoy使用。
4. 當 有 服 務 訪 問 時 , Envoy 在 處 理Outbound請求時, 根據配置的LB策略,選擇一個服務實例發起訪問

Istio 服務發現實現:基於Kubernetes

1. Pilot 實現若干服務發現的接口定義
2. Pilot 的Controller List/WatchKubeAPIserver上service、endpoint等資源對象並轉換成標準格式。
3. Envoy從Pilot獲取xDS,動態更新
4. 當有服務訪問時, Envoy在處理Outbound請求時,根據配置的LB策略,選擇一個服務實例發起訪問。

Kubernetes & Istio 服務模型

Kuberntes的服務發現

Istio Upon Kubernetes場景

Istio Upon Kubernetes場景

Istio ( upon Kubernetes)服務發現和配置

Istio ( upon Kubernetes)服務發現和配置

Istio服務配置管理

Istio 服務訪問規則維護和工作機制

Istio 服務訪問規則維護和工作機制
  • 1. 配置:管理員通過Pilot配置治理規則
  • 2. 下發: Envoy從Pilot獲取治理規則
  • 3. 執行:在流量訪問的時候執行治理規則

Istio治理規則

  • VirtualService
  •  DestinationRule
  • Gateway
  •  ServiceEntry
  •  …

https://istio.io/docs/reference/config/istio.networking.v1alpha3/

Istio流量規則: VirtualService

Istio流量規則: VirtualService

Istio流量規則: DestinationRule

Istio流量規則: DestinationRule

Istio流量規則: ServiceEntry & Gateway

ServiceEntry:

  • 功能: Mesh外的服務加入到服務發現中,向Mesh裏面的服務一樣的被治理
  • 機制: 將ServiceEntry描述的服務加入到服務發現中;對這些服務的outbound流量進行攔截,進而進行治理

Gateway:

  • 功能:將mesh內的一個服務發佈成可供外部訪問。
  • 機制:在入口處部署一個ingress的Envoy,在其上執行服務治理。

Istio配置規則維護和下發流程

治理規則定義 Istio VS Envoy
 

Istio 規則
Envoy規則

Istio治理能力執行位置

Istio服務發現&規則管理與Kubernetes結合

Kubernetes & Istio 結合

服務發現和配置管理: Istio+K8S

服務發現和配置管理: Spring Cloud+K8S

 

發佈了410 篇原創文章 · 獲贊 1345 · 訪問量 208萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章