Service Mesh 介紹
它是一個用於處理服務和服務之間通訊的基礎設施層,它負責爲構建複雜的雲原生應用傳遞可靠的網絡請求,併爲服務通訊實現了微服務所須要的基本功能:例 如服務發現,負載均衡監控,流量管理,訪問控制等。在實踐中,服務網絡一般實現爲一組和應用程序部署在一塊兒的輕量級的網絡代理,但對應用程序來講是透明的。node
這種架構的優點:linux
ServiceA 至關於一個微服務,Sidecar是這個微服務的網絡代理。ServiceA與外部的全部通訊都由Sidercar來負責, Sidecar與ServiceA 相互獨立,ServiceA感知不到Sidecar的存在,它們至關因而兩個獨立的容器,又在同一個Pod之中。git
Istio 是ServiceMesh的產品化落地,是目前最受歡迎的服務網絡,功能豐富,成熟度高。github
鏈接 Connect
安全 Secure
控制 Control
觀察 Observe
安全
k8s: 是部署運維,包括:應用部署,彈性伸縮,資源共享,資源隔離
istio: 是服務治理,包括:流量管制,熔斷限流,動態路由,鏈路追蹤
二者是一種互補關係。bash
數據層面:(至關於k8s的node節點)由一組代理級成,代理微服務全部的網絡通訊,並接收和實施來自mixer的策略。
Proxy: 負責高效轉發與策略實現。
控制層面: (至關於k8s的master節點)管理和代理來的路由流星。此外經過mixer實現策略與收集來自代理的數據。
Mixer: 適配組件,數據層面與控制層面經過它實現交互,爲proxy提供策略和數據上報。
Pilot: 策略配置組件,爲proxy提供服務發現,智能路由,錯誤處理等
Citadel: 安全組件,提供證書生成下發,加密通訊,訪問控制。
Galley: 配置管理,驗證,分發。網絡
Istio有4個配置資源:
• VirtualService:實現服務請求路由規則的功能,至關地k8s中的service.
• DestinationRule:實現目標服務的負載均衡、服務發現、故障處理和故障注入的功能,至關於ingress.
• Gateway:讓服務網格內的服務暴露出去。
• ServiceEntry :讓服務網格內的服務能夠訪問外部架構
[root@master ~]# mkdir istio [root@master ~]# cd istio/ #下載istio的版本 [root@master istio]# wget https://github.com/istio/istio/releases/download/1.4.2/istio-1.4.2-linux.tar.gz [root@master istio]# ls istio-1.4.2-linux.tar.gz [root@master istio]# [root@master istio]# tar -zxvf istio-1.4.2-linux.tar.gz [root@master istio]# ls istio-1.4.2 bin install LICENSE manifest.yaml README.md samples tools [root@master istio]# cd istio-1.4.2/ [root@master istio-1.4.2]# ls bin/ #把istio的cli二進制文件拷貝到環境變量下 istioctl [root@master istio-1.4.2]# cp bin/istioctl /usr/bin/ [root@master istio-1.4.2]# #查看istio當前支持安裝模式 [root@master istio-1.4.2]# istioctl profile list Istio configuration profiles: default #默認安裝 demo #徹底安裝 minimal #最小安裝 remote sds [root@master istio-1.4.2]# [root@master istio-1.4.2]# istioctl manifest apply --set profile=demo