在Mac上安裝Istio並使用,有豐富的監控Kiali、Grafana、Jaeger


我最新最全的文章都在 南瓜慢說 www.pkslow.com ,文章更新也只在官網,歡迎大家來喝茶~~

1 簡介

之前在文章《服務網格Istio入門-詳細記錄Kubernetes安裝Istio並使用》已經詳細地介紹了如何在Linux系統上在Kubernetes安裝並使用Istio,但畢竟服務器是要錢的,幾毛錢一小時,是我格局小了,但我還是想在Mac上安裝使用。

2 安裝Istio

我的電腦已經安裝了Kubernetes了,可以參考《Mac上使用Docker Desktop啟動Kubernetes,踩坑后終於搞掂》,現在直接安裝Istio。

下載對應的安裝包:

$ curl -L https://istio.io/downloadIstio | sh -

目錄如下:

把bin目錄下的istioctl添加到PATH。

$ export ISTIO_HOME=/Users/larry/Software/istio/istio-1.10.3
$ export PATH=$PATH:$ISTIO_HOME/bin

檢測是否可以執行安裝:

$ istioctl x precheck
✔ No issues found when checking the cluster. Istio is safe to install or upgrade!

沒有問題,就可以開始安裝了:

$ istioctl install

因為要下載鏡像,所以需要花一點時間,成功安裝如下:

可以做一些簡單的檢查:

# 檢查istio-system命令空間下的Pod
$ kubectl get pod -n istio-system
# 檢查資源
$ kubectl api-resources | grep istio

結果如下:

3 使用istio

3.1 注入代理

Istio默認不會給其它Pod注入代理,需要給Namespace添加對應的標簽才可以:

$ kubectl label namespace default istio-injection=enabled

但對於現有的Pod,也還是不會注入的,沒關系,我們來使用官方提供的示例,新創建一些資源:

$ kubectl apply -f istio-1.10.3/samples/bookinfo/platform/kube/bookinfo.yaml

因為是第一次啟動,要下載鏡像,所以要花比較長的時間,如下面命令觀察:

$ watch 'kubectl get pod -l app -l version'

幾分鍾后,終於搞定:

可以看到每個Pod都有兩個Container,一個是應用的,一個是代理的。

3.2 安裝監控插件

為了更好地可視化地監控應用,我們來安裝一些插件:

$ kubectl apply -f istio-1.10.3/samples/addons

同樣的等待:

$ watch 'kubectl get pod -n istio-system'

大概5分鍾左右,成功啟動了:

可以看到許多很常見的監控軟件:Grafana、Prometheus等。

3.3 在外部訪問資源

Istio給我們提供了Gateway的功能,我們給應用創建一個Gateway對外暴露服務:

$ kubectl apply -f istio-1.10.3/samples/bookinfo/networking/bookinfo-gateway.yamlgateway.networking.istio.io/bookinfo-gateway createdvirtualservice.networking.istio.io/bookinfo created$ kubectl get gatewayNAME               AGEbookinfo-gateway   17s$ kubectl get virtualservices.networking.istio.ioNAME       GATEWAYS               HOSTS   AGEbookinfo   ["bookinfo-gateway"]   ["*"]   29s

因為我很早之前就安裝了Ingress Controller(Kubernetes用Helm安裝Ingress並踩一下使用的坑),為了防止沖突,把原來的給刪掉:

# 安裝命令,不執行# helm install azure-ingress azure/nginx-ingress# 刪除Ingress Controllerhelm delete azure-ingress

然后就可以正常訪問應用了:http://localhost/productpage

我們可以多點擊幾次,多刷新幾次,可以多產生一些流量,以便后續查看監控。

3.4 查看監控

同樣,我們也需要在外部訪問監控的內容,訪問kiali如下,會直接幫我們打開瀏覽器:

$ istioctl dashboard kialihttp://localhost:20001/kiali

可以查看完整清晰的流量走向圖,知道有什么組件,它們之間的調用關系是怎樣的:

查看特定的組件productpage,會以它為中心顯示與它直接關聯的應用和關系:

當然,也可以查看Grafana:

$ istioctl dashboard grafana

界面如下:

查看Jaeger:

$ istioctl dashboard jaeger

界面如下:

查看Prometheus:

$ istioctl dashboard prometheus

界面如下:

總結

Istio給我們提供了很多有用的特性,光監控方面就非常豐富,更多細節我們后續再討論吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM