在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給我們提供了很多有用的特性,光監控方面就非常豐富,更多細節我們後續再討論吧。