[读书笔记] - Istio架构
生活随笔
收集整理的這篇文章主要介紹了
[读书笔记] - Istio架构
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 Istio的工作機制
-
控制面
- Pilot
- Mixer
- Citadel
-
數據面
- Envoy
2 Istio的服務模型
2.1 服務
定義:K8S中的serivce只要滿足Istio的約束即可轉換為Istio的service并配置規則進行流量治理
約束1:端口命名,且必須是[-]的格式。
- protocol:可以是tcp、http、http2、https、grpc、tls、mongo、mysql、redis等
- 如果端口命名沒有基于以上格式,則端口流量會被當做TCP流量處理
約束2:服務關聯,pod需要關聯到serivce,如果一個pod屬于多個service,那么service不能再同一個端口上使用不同的協議。
- 在Istio0.8后,一個pod只能屬于一個service
約束3:deployment必須顯示包含app和version標簽
- app標簽用于分布式追蹤時補齊上下文信息
- version標簽用于遙測數據補齊上下文信息
2.2 服務版本
定義:將一個service關聯到多個deployment,每個deployment對應一個服務的版本,實現灰度發布
[本身K8s并不支持灰度發布。但是K8s 可以通過暫停滾動升級實現金絲雀發布,分流小部分流量,等發布一段時間后沒有問題再繼續滾動升級。但是因為暫停滾動發布無法在一個確切的位置暫停,所以單純使用K8s進行金絲雀發布,最好還是使用兩個不同的deployment,并同時調整它們pod的數量。]
- 保證app標簽和service的標簽選擇器一致,確保service能關聯到領兩個不同的deployment的pod
- 使用的鏡像不同,version標簽不同,意味著服務的不同版本,進而可以執行不同的路由規則
2.3 服務實例
定義:真正處理服務請求的后端
- Endpoint
- Service
- Labels
- AvailabilityZone
- ServiceAccount
3 Istio的主要組件
3.1 Istio-pilot
- 服務發現
- 向Envoy下發規則
- 流量治理
- 認證授權
3.2 Istio-telemetry
收集遙測數據的Mixer服務組件
3.3 Istio-policy
Envoy在轉發服務的請求前調用Check接口檢查是否允許訪問
- 配額
- 授權
- 白名單
3.4 Istio-citadel
提供自動生成、分發、輪換與撤銷秘鑰和證書功能
- 以secret形式存放證書秘鑰
- 在pod創建時掛載到pod上
- 實現雙向TLS認證、通道加密、訪問授權等安全功能
3.5 Istio-galley
- 負責配置管理的組件,驗證配置信息的格式和內容的正確性
- 將配置信息提供給Pilot和Mixer服務使用
3.6 Istio-sidecar-injector
自動注入組件,開啟后在pod創建時會自動調用在pod中注入sidecar容器
3.7 Istio-proxy
sidecar容器的正式名字
- Envoy
- pilot-agent守護進程
3.8 Istio-ingressgateway
從服務網格外訪問服務網格內必須經過這個gateway
3.9 其他組件
服務監控管理
- Jaeger-agent
- Jaeger-conllector
- Jaeger-quer
- Kiali
- Prometheus
- Tracing
- Zipkin
總結
以上是生活随笔為你收集整理的[读书笔记] - Istio架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dede模板php代码,织梦dede模板
- 下一篇: Istio架构概述