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

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

1 簡介

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

2 安裝Istio

個人電腦已經安裝了Kubernetes了,能夠參考《Mac上使用Docker Desktop啓動Kubernetes,踩坑後終於搞掂》,如今直接安裝Istio。api

下載對應的安裝包:瀏覽器

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

目錄以下:bash

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

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

檢測是否能夠執行安裝:app

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

沒有問題,就能夠開始安裝了:curl

$ istioctl install

由於要下載鏡像,因此須要花一點時間,成功安裝以下:url

能夠作一些簡單的檢查:spa

# 檢查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給咱們提供了不少有用的特性,光監控方面就很是豐富,更多細節咱們後續再討論吧。

相關文章
相關標籤/搜索