一 istio安裝
1.1 下載下傳安裝
https://istio.io/latest/docs/setup/getting-started/
安裝前提:你的伺服器必須可以連接配接外網需要下載下傳谷歌鏡像
# 下載下傳
cd /usr/local/
curl -L https://istio.io/downloadIstio | sh - #預設下載下傳最新的
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.14.1 TARGET_ARCH=x86_64 sh - #指定版本和架構
cd istio-1.14.1
export PATH=$PWD/bin:$PATH
ln -sv istio-1.14.1 istio
ln -sv /usr/local/istio/bin/istioctl /usr/local/bin/istioctl
# 安裝
istioctl profile list
default: 生産可用
demo:測試環境使用
istioctl install --set profile=demo -y

1.2 檢視pod和svc
root@k8s-master01:/usr/local# kubectl get pod -n istio-system
NAME READY STATUS RESTARTS AGE
istio-egressgateway-7fcb98978c-b885f 1/1 Running 0 11m
istio-ingressgateway-55b6cffcbc-6knqm 1/1 Running 0 11m
istiod-56d9c5557-stvdz 1/1 Running 0 16m
檢視istio的svc
1.3 設定loadbalancer的位址
這個位址一般是vip位址,
kubectl edit svc istio-ingressgateway -n istio-system
externalIPs:
- 172.31.7.100
然後再次檢視svc
二 部署istio裡各個插件
各插件主要包括 grafana jaeger kiali prometheus,
cd /usr/local/istio/
kubectl apply -f samples/addons/
然後檢視各個pod
三 部署bookinfo項目進行測試
3.1 給指定命名空間打标簽
凡是在這個命名空間内的Pod都會自動注入sidercar
kubectl label namespace default istio-injection=enabled
3.2 部署bookinfo
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml #網絡
效果如下圖所示:
通路url ip/productpage
3.3 驗證流量治理
首先 執行,詳情見https://istio.io/latest/docs/examples/bookinfo/#apply-default-destination-rules
#必須先執行這個
kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
3.3.1 測試v1版本流量
kubectl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml
無論浏覽器怎麼重新整理,都是請求到v1
3.3.3 測試v3版本流量
kubectl apply -f virtual-service-reviews-v3.yaml #隻通路v3版本
當執行多個規則,後面的規則會覆寫前面的規則。
四 映射kiali,浏覽器通路
https://github.com/iKubernetes/istio-in-practise.git
克隆代碼到本地伺服器
cd /root/istio-in-practise/Traffic-Management-Basics
kubectl apply -f kiali-port-80/
檢視networking和virtualservices,然後在hosts檔案裡增加 kiali.magedu.com 這個域名解析即可通路
root@k8s-master1:~/istio-in-practise/Traffic-Management-Basics# kubectl get gateways.networking -n istio-system
NAME AGE
kiali-gateway 109s
root@k8s-master1:~/istio-in-practise/Traffic-Management-Basics# kubectl get virtualservices -n istio-system
NAME GATEWAYS HOSTS AGE
kiali-virtualservice ["kiali-gateway"] ["kiali.magedu.com"] 2m5s
作者:漸行漸遠