大綱
Istio架構&Pilot介紹
Istio服務發現
Istio服務配置
stio服務發現&規則管理與Kubernetes結合
ShowCase
Istio架構&Pilot介紹
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服務發現流程
- 服務註冊表: 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服務配置管理
Istio 服務訪問規則維護和工作機制
- 1. 配置:管理員通過Pilot配置治理規則
- 2. 下發: Envoy從Pilot獲取治理規則
- 3. 執行:在流量訪問的時候執行治理規則
Istio治理規則
- VirtualService
- DestinationRule
- Gateway
- ServiceEntry
- …
https://istio.io/docs/reference/config/istio.networking.v1alpha3/
Istio流量規則: VirtualService
Istio流量規則: DestinationRule
Istio流量規則: ServiceEntry & Gateway
ServiceEntry:
- 功能: Mesh外的服務加入到服務發現中,向Mesh裏面的服務一樣的被治理
- 機制: 將ServiceEntry描述的服務加入到服務發現中;對這些服務的outbound流量進行攔截,進而進行治理
Gateway:
- 功能:將mesh內的一個服務發佈成可供外部訪問。
- 機制:在入口處部署一個ingress的Envoy,在其上執行服務治理。
Istio配置規則維護和下發流程
治理規則定義 Istio VS Envoy
Istio治理能力執行位置
Istio服務發現&規則管理與Kubernetes結合
Kubernetes & Istio 結合
服務發現和配置管理: Istio+K8S
服務發現和配置管理: Spring Cloud+K8S