日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Istio系列学习(二)----Istio架构

發布時間:2023/12/31 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Istio系列学习(二)----Istio架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Istio的工作機制

Istio分為控制面和數據面.
控制面包含Pilot,Mixer,Citadel
數據面由伴隨每個應用程序部署的代理程序Envoy組成.

1、自動注入
在創建應用程序時自動注入Sidecar代理.在K8s場景下創建pod時,kube-API server調用管理面組件的Sidecar-Injector服務,自動修改應用程序的描述信息并注入Sidecar.在真正創建pod時,在創建業務容器的同時在pod中創建sidecar容器.

2、流量攔截
在pod初始化時設置iptables規則,當有流量到來時,給予配置的iptables規則攔截業務容器的Inbound流量和outbound流量到sidecar上,應用程序感知不到sidecar的存在,還以原本的方式進行互相訪問,

3、服務發現
服務發起方的Envoy調用管理面組件Pilot的服務發現接口獲取目標服務的 實例列表.

4、負載均衡
服務發起方的envoy根據pilot中配置的負載均衡策略選擇服務實例。
上圖中:數據面的各個envoy從pilot中獲取forcecast服務的負載均衡配置,并執行負載均衡動作

5)流量治理
envoy從pilot中獲取配置的流量規則,在攔截到inbound和outbound流量時執行治理邏輯。
上圖中:fronted服務側的envoy從pilot中獲取流量治理規則,并根據流量治理規則將不同特征的流量分發到forecats的v1和v2版本。

6)訪問安全
在服務間訪問時通過雙方的envoy進行雙向認證和通道加密,并基于服務的身份進行授權管理
上圖中:pilot下發安全相關配置,在fronted和forecast服務上的envoy上自動加載證書和秘鑰來實現雙向認證。證書和秘鑰由citadel來維護。
7)服務遙測
服務間通信時,通信雙方的envoy都會連接管理面組件mixer上報訪問數據,并通過mixer將數據轉發給對應的監控后端。
如上圖:fronted服務隊forecast服務的訪問監控指標、日志和調用鏈都通過該方式手機到對應的監控后端。
8)策略執行
進行服務訪問時,通過mixer連接后端服務來控制服務間的訪問,判斷對服務房型還是拒絕。
上圖中:mixer可以對接一個限流服務對fronted服務到forecast服務的訪問進行速率控制。
9)外部訪問
網格的入口有一個envoy扮演入口網關的角色。
上圖中:外部服務通過gateway訪問入口服務fronted,對fronted服務的負載均衡、治理策略都在該gateway上執行。

每個過程都可以進行如下抽象:服務調用雙方的envoy代理攔截流量,并根據管理面的相關配置執行對應的治理動作。

二、Istio的服務模型

1、Istio的服務
邏輯上:服務是istio主要管理的資源對象,包括域名和端口列表等屬性;每個端口包含端口名稱、端口號和端口的協議。不同協議有不同的內容,在istio中也有不同的治理規則。

物理層面:服務的存在形式就是k8s的service,只要滿足了上述約束條件,就可以轉換為istio的service并配置規則進行流量治理。

2、Service
k8s中:service通過一個域名或虛擬ip和port保證了服務地址是不變的,也無需暴露k8s中pod的端口和地址。

k8s的service的定義

apiVersion: v1 kind: Service metadata:name: forecast spec:ports:- port: 8081 #指定service的虛擬端口號targetPort: 8080 #對應到Pod容器的8080端口selector: app: forecast #對應到擁有label(app=webapp)的Pod

istio的service與k8s的區別在于:要滿足istio的服務約束,如在端口名稱上指定協議。如下(唯一區別是指定了協議為http):

apiVersion: v1 kind: Service metadata:name: forecast spec:ports:- port: 8081 #指定service的虛擬端口號targetPort: 8080 #對應到Pod容器的8080端口name: httpselector: app: forecast #對應到擁有label(app=webapp)的Pod

在kubernetes中,一般先通過Deployment創建工作負載,在通過創建Service關聯這些工作負載,從而暴露這些工作負載的接口,
在Istio中,Service是治理的對象,是Istio的核心管理實體,提供了對外訪問能力的執行體,是istio服務的元數據。

三、Istio的服務版本

Istio可以進行灰度 發布,將一個Service關聯到多個Deployment,每個Deployment都對應服務的一個版本.

說明:
1)兩個deployment都有相同的app:forecast標簽,該標簽和service的標簽選擇器一致,所以service能關聯到這兩個deployment對應的Pod。

2)兩個deployment有不同的鏡像版本,各自創建的Pod也不相同。version標簽不同,分別是v1和v2

四、Istio的服務實例

istio的service對應k8s的service;
istio的服務實例對應k8s的endpoints
k8s的endpoints對象名稱和service對應名稱相同,是:列表。負責維護Service后端pod的變化.

總結

以上是生活随笔為你收集整理的Istio系列学习(二)----Istio架构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。