1. 程式人生 > 其它 >在Mac上安裝Istio並使用,有豐富的監控Kiali、Grafana、Jaeger

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