這篇文章主要介紹了Istio是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)主要從事網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)仁化,十年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
Istio是Google、IBM和Lyft聯(lián)合開源的微服務(wù)Service Mesh框架,旨在解決大量微服務(wù)的發(fā)現(xiàn)、連接、管理、監(jiān)控以及安全等問題。
Istio的主要特性包括:
HTTP、gRPC和TCP網(wǎng)絡(luò)流量的自動負(fù)載均衡
豐富的路由規(guī)則,細(xì)粒度的網(wǎng)絡(luò)流量行為控制
流量加密、服務(wù)間認(rèn)證,以及強(qiáng)身份聲明
全范圍(Fleet-wide)策略執(zhí)行
深度遙測和報告
Istio從邏輯上可以分為數(shù)據(jù)平面和控制平面:
數(shù)據(jù)平面主要由一系列的智能代理(Envoy)組成,管理微服務(wù)之間的網(wǎng)絡(luò)通信
控制平面負(fù)責(zé)管理和配置這些智能代理,并動態(tài)執(zhí)行策略
Istio架構(gòu)可以如下圖所示
主要由以下組件構(gòu)成
Envoy:Lyft開源的高性能代理總線,支持動態(tài)服務(wù)發(fā)現(xiàn)、負(fù)載均衡、TLS終止、HTTP/2和gPRC代理、健康檢查、性能測量等功能。Envoy以sidecar的方式部署在相關(guān)的服務(wù)的Pod中。
Mixer:負(fù)責(zé)訪問控制、執(zhí)行策略并從Envoy代理中收集遙測數(shù)據(jù)。Mixer支持靈活的插件模型,方便擴(kuò)展
Pilot:用戶和Istio的接口,驗證用戶提供的配置和路由策略并發(fā)送給Istio組件,管理Envoy示例的生命周期
Istio-Auth:提供服務(wù)間和終端用戶的認(rèn)證機(jī)制
CentOS 7.2
Docker 17.04.0-ce
Kubernetes 1.6.2
Istio 0.1.6
1.下載安裝包
下載地址:https://github.com/istio/istio/releases
下載Linux版本的當(dāng)前最新版安裝包
wget https://github.com/istio/istio/releases/download/0.1.6/istio-0.1.6-linux.tar.gz
2.解壓
解壓后,得到的目錄結(jié)構(gòu)如下:
[root@cz_fbsdb500_06 istio]# tree istio-0.1.6 istio-0.1.6 ├── bin │ └── istioctl ├── CONTRIBUTING.md ├── install │ ├── kubernetes │ │ ├── addons │ │ │ ├── grafana.yaml │ │ │ ├── prometheus.yaml │ │ │ ├── servicegraph.yaml │ │ │ └── zipkin.yaml │ │ ├── istio-auth-with-cluster-ca.yaml │ │ ├── istio-auth.yaml │ │ ├── istio-rbac-alpha.yaml │ │ ├── istio-rbac-beta.yaml │ │ ├── istio.yaml │ │ ├── README.md │ │ └── templates │ │ ├── istio-auth │ │ │ ├── istio-cluster-ca.yaml │ │ │ ├── istio-egress-auth.yaml │ │ │ ├── istio-ingress-auth.yaml │ │ │ └── istio-namespace-ca.yaml │ │ ├── istio-egress.yaml │ │ ├── istio-ingress.yaml │ │ ├── istio-mixer.yaml │ │ └── istio-pilot.yaml │ └── README.md ├── istio.VERSION ├── LICENSE ├── README.md └── samples ├── apps │ ├── bookinfo │ │ ├── bookinfo-ingress.yaml │ │ ├── bookinfo-v1.yaml │ │ ├── bookinfo.yaml │ │ ├── cleanup.sh │ │ ├── destination-ratings-test-delay.yaml │ │ ├── loadbalancing-policy-reviews.yaml │ │ ├── mixer-rule-additional-telemetry.yaml │ │ ├── mixer-rule-empty-rule.yaml │ │ ├── mixer-rule-ratings-denial.yaml │ │ ├── mixer-rule-ratings-ratelimit.yaml │ │ ├── README.md │ │ ├── route-rule-all-v1.yaml │ │ ├── route-rule-delay.yaml │ │ ├── route-rule-reviews-50-v3.yaml │ │ ├── route-rule-reviews-test-v2.yaml │ │ ├── route-rule-reviews-v2-v3.yaml │ │ └── route-rule-reviews-v3.yaml │ ├── httpbin │ │ ├── httpbin.yaml │ │ └── README.md │ └── sleep │ ├── README.md │ └── sleep.yaml └── README.md 11 directories, 46 files
3.安裝istioctl
將./bin/istioctl
拷貝到你的$PATH
目錄下。
4.檢查RBAC
因為我們安裝的kuberentes版本是1.6.2默認(rèn)支持RBAC,這一步可以跳過。如果你使用的其他版本的kubernetes,請參考官方文檔操作。
執(zhí)行以下命令,正確的輸出是這樣的:
$ kubectl api-versions | grep rbac rbac.authorization.k8s.io/v1alpha1 rbac.authorization.k8s.io/v1beta1
5.創(chuàng)建角色綁定
$ kubectl create -f install/kubernetes/istio-rbac-beta.yaml clusterrole "istio-manager" created clusterrole "istio-ca" created clusterrole "istio-sidecar" created clusterrolebinding "istio-manager-admin-role-binding" created clusterrolebinding "istio-ca-role-binding" created clusterrolebinding "istio-ingress-admin-role-binding" created clusterrolebinding "istio-sidecar-role-binding" created
注意:官網(wǎng)的安裝包中的該文件中存在RoleBinding錯誤,應(yīng)該是集群級別的clusterrolebinding
,而release里的代碼只是普通的rolebinding
,查看該Issue Istio manager cannot list of create k8s TPR when RBAC enabled #327。
6.安裝istio核心組件
用到的鏡像有:
docker.io/istio/mixer:0.1.6 docker.io/istio/pilot:0.1.6 docker.io/istio/proxy_debug:0.1.6
我們暫時不開啟Istio Auth。
注意:本文中用到的所有yaml文件中的type: LoadBalancer
去掉,使用默認(rèn)的ClusterIP,然后配置Traefik ingress,就可以在集群外部訪問。請參考安裝Traefik ingress。
bash kubectl apply -f install/kubernetes/istio.yaml
7.安裝監(jiān)控插件
用到的鏡像有:
docker.io/istio/grafana:0.1.6 quay.io/coreos/prometheus:v1.1.1 gcr.io/istio-testing/servicegraph:latest docker.io/openzipkin/zipkin:latest
安裝插件
bash kubectl apply -f install/kubernetes/addons/prometheus.yaml kubectl apply -f install/kubernetes/addons/grafana.yaml kubectl apply -f install/kubernetes/addons/servicegraph.yaml kubectl apply -f install/kubernetes/addons/zipkin.yaml
在traefik ingress中增加以上幾個服務(wù)的配置,同時增加istio-ingress配置。
Yaml - host: grafana.istio.io http: paths: - path: / backend: serviceName: grafana servicePort: 3000 - host: servicegraph.istio.io http: paths: - path: / backend: serviceName: servicegraph servicePort: 8088 - host: prometheus.istio.io http: paths: - path: / backend: serviceName: prometheus servicePort: 9090 - host: zipkin.istio.io http: paths: - path: / backend: serviceName: zipkin servicePort: 9411 - host: ingress.istio.io http: paths: - path: / backend: serviceName: istio-ingress servicePort: 80
我們使用Istio提供的測試應(yīng)用bookinfo微服務(wù)來進(jìn)行測試。該應(yīng)用架構(gòu)圖如下:
部署應(yīng)用
kubectl create -f <(istioctl kube-inject -f samples/apps/bookinfo/bookinfo.yaml)
Istio kube-inject
命令會在bookinfo.yaml
文件中增加Envoy sidecar信息。參考:https://istio.io/docs/referenc ... nject
在本機(jī)的/etc/hosts
下增加VIP節(jié)點和ingress.istio.io
的對應(yīng)信息。具體步驟參考:邊緣節(jié)點配置
在瀏覽器中訪問http://ingress.istio.io/productpage
不斷刷新productpage頁面,將可以在以下幾個監(jiān)控中看到如下界面。
Grafana頁面
http://grafana.istio.io
Prometheus頁面
http://prometheus.istio.io
ServiceGraph頁面
http://servicegraph.istio.io/dotviz
可以用來查看服務(wù)間的依賴關(guān)系。
展示服務(wù)之間調(diào)用關(guān)系圖 ,訪問http://servicegraph.istio.io/graph
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Istio是什么”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!