用 Istio DestinationRule元件來流量管理 - 實作篇
用 Istio DestinationRule元件來流量管理 - 實作篇

用 Istio DestinationRule元件來流量管理 - 實作篇

Tags
Kubernetes
ithome 2020 ironman
Date
Oct 10, 2020
本文章同時發佈於:
文章為自己的經驗與夥伴整理的內容,設計沒有標準答案,如有可以改進的地方,請告訴我,我會盡我所能的修改,謝謝大家~

大家好,接下來要介紹 Istio DestinationRule 元件實作的部分,

實作

以下的實作範例都在Code-Example中,
code 中以 server 的 pods 改為兩個,
notion image
並且新增了一個 DestinationRule 元件在DAY26/helm-digimon/templates/load-balancer.yaml
apiVersion: networking.istio.io/v1alpha3kind: DestinationRulemetadata: name: serverspec: host: server trafficPolicy: loadBalancer: simple: ROUND_ROBIN
  • host: 會對 server 這個 service 來做流量處理
  • trafficPolicy.loadBalancer.simple: 選擇流量處理的策略,其他不同的策略在此
啟動 K8s 集群,步驟不再贅述,詳細介紹可以看DAY23
$ minikube start --kubernetes-version v1.16.0 $ istioctl install --set profile=demo $ kubectl label namespace default istio-injection=enabled $ cd DAY26/helm-digimon $ helm install . --generate-name$ minikube tunnel
再來我們要觀看 pods 是不是有正確分流,使用$ kubectl get pods拿取全部pods
notion image
使用$ kubectl logs來取得 pods 的 log,以我來說我會是以下指令:
$ kubectl logs -f server-66db48686-f4xm5 $ kubectl logs -f server-66db48686-sdpfs
notion image
兩個 pods 已經成功被分流。

如果想要看看沒有 DestinationRule 元件會產生什麼狀況,可以把DAY26/helm-digimon/templates/load-balancer.yaml刪除,再重新以上步驟創建一個 K8s 集群
notion image
我們會看到流量只有導到左邊的 pods,造成左邊很忙右邊很閒的狀況 XD。

參考