1. 程式人生 > >開箱即用!使用Rancher 2.3 啟用Istio初體驗

開箱即用!使用Rancher 2.3 啟用Istio初體驗

本文來自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/430496