Istio安裝以及部署示例微服務


安裝

提前准備好k8s環境,下載Istio安裝包,我這里使用的1.6.14版本,k8s版本為v1.19.8

tar zxvf istio-1.6.14-linux-amd64.tar.gz
cd istio-1.6.14/
cp bin/istioctl /usr/bin

查看不同安裝模式的配置文件列表

istioctl profile list

可以打印配置文件內容(選做)

istioctl profile dump [配置文件名稱]

使用demo模式的配置安裝

[root@ istio-1.6.14]# istioctl  manifest apply --set profile=demo
Detected that your cluster does not support third party JWT authentication. Falling back to less secure first party JWT. See https://istio.io/docs/ops/best-practices/security/#configure-third-party-service-account-tokens for details.
✔ Istio core installed                                                                                                
✔ Istiod installed                                                                                                    
✔ Ingress gateways installed                                                                                          
✔ Egress gateways installed                                                                                           
✔ Addons installed                                                                                                    
✔ Installation complete 

驗證是否安裝成功

[root@ istio-1.6.14]# kubectl get pod -n istio-system
NAME                                    READY   STATUS    RESTARTS   AGE
grafana-7647cf9c74-lvbhp                1/1     Running   0          6m51s
istio-egressgateway-6999674db4-tsm28    1/1     Running   0          6m55s
istio-ingressgateway-66757b946f-qqvms   1/1     Running   0          6m55s
istio-tracing-7fcc6f5848-n99wt          1/1     Running   0          6m50s
istiod-7c966f79c4-76zl2                 1/1     Running   0          7m38s
kiali-7f575d9c4c-ndlc6                  1/1     Running   0          6m50s
prometheus-fcbb8cbdd-vdm2v              2/2     Running   0          6m50s

以端口轉發模式臨時暴露20001端口,進入kiali界面

kubectl port-forward --address 0.0.0.0 kiali-7f575d9c4c-ndlc6 20001 -n istio-system

若想直接暴露端口,則設置以NodePort暴露端口

kubectl -n istio-system edit svc kiali

改為下圖部分

  ports:
  - name: http-kiali
    nodePort: 32660
    port: 20001
    protocol: TCP
    targetPort: 20001
  selector:
    app: kiali
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}

查看istio里安裝的其他服務,比如grafana、Jaeger(tracing)也可以這樣暴露出來

kubectl -n istio-system get svc

卸載

istioctl manifest generate --set profile=demo | kubectl delete -f -

運行示例微服務Bookinfo

Bookinfo - 在線圖書商店

架構圖:

Bookinfo 應用分為四個單獨的微服務, 這些服務對 Istio 並無依賴,但是構成了一個有代表性的服務網格的例子:它由多個不同語言編寫的服務構成,並且其中有一個應用會包含多個版本。

  • productpage 會調用 detailsreviews 兩個微服務,用來生成頁面。
  • details 中包含了書籍的信息。
  • reviews 中包含了書籍相關的評論。它還會調用 ratings 微服務。
  • ratings 中包含了由書籍評價組成的評級信息。

reviews 微服務有 3 個版本,可用來展示各服務之間的不同的調用鏈路:

  • v1 版本不會調用 ratings 服務。
  • v2 版本會調用 ratings 服務,並使用 1 到 5 個黑色星形圖標來顯示評分信息。
  • v3 版本會調用 ratings 服務,並使用 1 到 5 個紅色星形圖標來顯示評分信息。

創建命名空間

kubectl create ns bookinfo

Istio] 默認自動注入 Sidecar,為 bookinfo 命名空間打上標簽 istio-injection=enabled

kubectl label ns bookinfo istio-injection=enabled

部署服務

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml -n bookinfo

查看pod

kubectl get po -n bookinfo

部署網關

kubectl apply -f  samples/bookinfo/networking/bookinfo-gateway.yaml -n bookinfo

查看暴露的端口

kubectl get svc -n istio-system

訪問,就可以看到頁面

http://主機ip:端口/productpage

加壓

for i in {1..100}; do curl -I http://主機ip:端口/productpage/productpage; sleep 1; done

然后查看kiali、grafana、Jaeger(tracing)就會出現數據,kiali默認賬戶密碼都是admin


免責聲明!

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



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