本文來自Rancher Labs
Rancher的理念是Run Kubernetes Everywhere,Rancher 2.3中許多重大更新,讓這一理念的實作又向前一步,

其中,最重要的兩個特性是集成了Istio以及對Windows的支持,本文我們將主要討論如何使用通過Rancher UI提供的Istio支持,并通過Kiali dashboard進行可視化,
前期準備:
-
正在運行的Kubernetes集群
-
安裝Rancher并匯入該集群
在本例中,我們將使用CIVO Cloud上的大型k3s托管集群,并且已經完成Rancher App的安裝(在Civo Marketplace的Rancher應用程式將會在集群上安裝Rancher,并將集群匯入其中),集群的設定可以參考以下步驟:
https://medium.com/@SaiyamPathak/managed-k3s-is-it-a-thing-9397799c38a
啟動集群之后,在集群創建程序中從marketplace選擇Rancher進行安裝,Civo將會啟動Rancher server并匯入集群,

集群準備就緒后,你將能看到Rancher 2.3的dashboard,它能夠支持Istio和Kiali,讓我們來探索一下這個dashboard吧!
集群創建之后,你可以下載kubeconfig,并連接集群,然后查看Rancher server以及cattle-agents是否起來并且運行,
kubectl get nodes
NAME STATUS ROLES AGE VERSION
kube-node-79ed Ready worker 96m v1.15.4-k3s.1
kube-master-bca5 Ready master 96m v1.15.4-k3s.1
kubectlg get pods -n cattle-system
NAME READY STATUS RESTARTS AGE
cattle-5669c57dcf-tw65t 1/1 Running 0 3h27m
cattle-node-agent-8lppr 1/1 Running 0 3h27m
cattle-node-agent-g5f6f 1/1 Running 0 3h27m
cattle-cluster-agent-587b6d44cf-ppnjd 1/1 Running 0 3h27m
為了訪問Rancher UI,創建一個ingress,rancher-ingress.yaml如下:
>> kubectl apply -f rancher-ingress.yaml
ingress.extensions/cattle-ingress created
kubectl get ingress -n cattle-system
NAME HOSTS ADDRESS PORTS AGE
cattle-ingress * 172.31.0.189 80 32s
現在如果你訪問任何節點ip,你都將看到Rancher server正在運行,

創建一個密碼,保存URL,隨后你應該能夠看到匯入的集群,

通過Rancher UI啟用Istio
檔案中是這樣描述Istio的:
使用云平臺的企業或組織可以從其中體會到很多益處,但是不可否認的是,采用云技識訓對DevOps團隊造成壓力,開發人員必須使用微服務來構建可移植性,同時,運維人員管理超大型混合云和多云部署,而服務網格使得微服務更加易用,其中Istio可以幫助你連接、保護、控制和觀察服務,
在很大程度上,Istio有助于降低部署的復雜性,并減輕開發團隊的負擔,它是一個完全開源的服務網格,可以在現有的分布式應用程式上透明地注入一層,同時,它也是一個平臺,包括可將其集成到任何日志記錄平臺、遙測或策略系統中的各種API,Istio的多樣功能可以讓你能夠成功、高效地運行分布式微服務架構,并提供統一地方式來保護、連接和監控微服務,
那么,現在我們開始通過Rancher UI中啟用Istio,并部署吧,
要啟用Istio,你需要訪問UI上方的選單欄,其路徑是:工具> Istio,你可以更改許多配置選項,而現在,我想讓所有配置都保持默認狀態并將ingress網關設定為True,啟用這一功能還將啟用監控功能,這是Istio正常運行的先決條件,

啟用之后,你將可以看到監控和Istio pod在命名空間cattle-prometheus(用于監控)和istio-system(用于istio)下出現,

>> kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
istio-citadel-6bb9c9f6fb-md9f8 1/1 Running 0 6m16s
istio-tracing-64d646945-xm4sm 2/2 Running 0 6m15s
istio-policy-68959c7999-5kmdb 2/2 Running 1 6m16s
istio-galley-67848cd58-g5tbt 1/1 Running 0 6m16s
kiali-5f8f876bd5-6djxf 2/2 Running 0 6m16s
istio-telemetry-778bfdcf74-ps9vl 2/2 Running 1 6m16s
istio-pilot-7546b9fdcc-rbxj8 2/2 Running 0 6m16s
istio-ingressgateway-6f877dd689-rskn4 1/1 Running 0 6m16s
istio-sidecar-injector-69c97ddbb5-x7jcv 1/1 Running 0 6m16s
>> kubectl get pods -n cattle-prometheus
NAME READY STATUS RESTARTS AGE
prometheus-operator-monitoring-operator-79484b9c6f-zshlq 1/1 Running 0 7m42s
exporter-node-cluster-monitoring-wnxtc 1/1 Running 0 7m39s
exporter-node-cluster-monitoring-k68fb 1/1 Running 0 7m39s
grafana-cluster-monitoring-5d676d89c5-vkbzm 2/2 Running 0 7m39s
prometheus-cluster-monitoring-0 5/5 Running 1 7m15s
exporter-kube-state-cluster-monitoring-5dfd658dc-pn8mt 1/1 Running 0 7m39s
現在,我們來進行Istio部署示例,生成流量并在Kiali dashboard中查看它,
我們將為示例應用程式創建deployment、Gateway以及虛擬服務,如下所示:
kubectl label namespace default istio-injection=enabled
namespace/default labeled
kubectl apply -f
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
kubectl apply -f
gateway.networking.istio.io/bookinfo-gateway created
kubectl apply -f
virtualservice.networking.istio.io/bookinfo created
生成流量:
現在,應用程式已經部署,你可以通過Istio gateway查看它,
>> kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-74f858558f-m5tsx 2/2 Running 0 10m
ratings-v1-7855f5bcb9-lkhgg 2/2 Running 0 10m
productpage-v1-8554d58bff-llnqh 2/2 Running 0 10m|
reviews-v2-d6cfdb7d6-rl4zk 2/2 Running 0 10m
reviews-v3-75699b5cfb-crdrd 2/2 Running 0 10m
reviews-v1-59fd8b965b-rmct2 2/2 Running 0 10m
>> kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 192.168.128.1 <none> 443/TCP 140m
details ClusterIP 192.168.154.118 <none> 9080/TCP 10m
ratings ClusterIP 192.168.207.69 <none> 9080/TCP 10m
reviews ClusterIP 192.168.141.42 <none> 9080/TCP 10m
productpage ClusterIP 192.168.128.87 <none> 9080/TCP 10m

點擊Test用戶和普通用戶,來生成一些流量,
從UI上方的選單欄中【資源】項,選擇Istio,你可以看到以下圖表:

點擊螢屏上的Kiali圖示,
Kiali
Kiali是Istio的可視化控制臺,它具有服務網格配置功能,它通過推斷拓撲來幫助理解你的服務網格架構并提供你的網格的健康狀態,此外,Kiali還提供了詳細的指標,并且其集成了基本的Grafana,因此可用于高級查詢,還集成了Jaeger,可提供分布式追蹤,
您可以查看已部署應用程式的完整拓撲以及流程,

下面是已經部署的應用程式的圖表:

以下是其他圖表:

服務圖表

版本化應用程式圖

作業負載圖
Jaeger
受Dapper和OpenZipkin的啟發,Jaeger被設計為一個開源分布式跟蹤系統,由Uber Technologies發布,它用于監控、診斷基于微服務的分布式系統,包括:
-
分布式背景關系傳播(Distributed Context Propagation)
-
分布式事務監控
-
根源分析(Root cause analysis)
-
服務依賴分析
-
性能/延遲優化

Jaeger UI

Jaeger 查詢
總 結
在本文中,我們討論了在Rancher 2.3.x中如何安裝Istio并使用Kiali可視化服務網格,我們還部署了一個示例應用程式并生成了一些流量,還使用Kiali和Jaeger查看它們,
如果你還想了解更多關于Istio、Kiali以及Jaeger的內容,歡迎訪問以下網站觀看視頻:
https://space.bilibili.com/430496045
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/45399.html
標籤:其他
上一篇:思科配置
