Traffic Management with Istio ( with Demo )

4cb5b950cfd0eabf5d6b828c951d4549?s=47 loftkun
August 08, 2019

Traffic Management with Istio ( with Demo )

2019/08/08 Thu

Cloud Native FUKUOKA #02 - connpass
https://cnjp.connpass.com/event/139837/

4cb5b950cfd0eabf5d6b828c951d4549?s=128

loftkun

August 08, 2019
Tweet

Transcript

  1. 2.

    About me • @loftkun • ヤフー株式会社 SRE部 • 将棋好き •

    対局結果検索サイトなど公開してます • ⾳楽好き • ROCK IN JAPAN FESTIVAL ⾏きます • ピアノ習いたい • コンテナ好き、k8sは前職で使ってた、現職でも使いたい
  2. 4.

    Machine CPU Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz 6Core/12Threads RAM

    64GB OS Ubuntu 17.10 k8s minikube v1.2.0 ( Kubernetes v1.15.0 ) assign 12cpu & 40GB RAM kubectl v1.15.0 istio v1.2.2 helm v2.14.1
  3. 5.

    minikube start vm-driver=virtualbox Container VM ( Node ) Minikube BareMetal

    ssh -fNL 12345:192.168.99.100:12345 loft@192.168.3.5 192.168.3.5 grafana service のnodePortが12345の場合 http://localhost:12345 でアクセスできるぞ 192.168.99.100 192.168.3.4 Minikube ssh でログイン可能
  4. 6.

    minikube start vm-driver=none Container Minikube BareMetal 192.168.3.5 ( Node )

    grafana service のnodePortが12345の場合 http://192.168.3.5:12345 でアクセスできるぞ 192.168.3.4 tcpdump –i docker0 全Pod間の通信をキャプチャできるぞ
  5. 9.

    https://istio.io/ • サービスメッシュを構成するOSS • CNCF Platinum Member • Proxyコンテナ(Envoy)をSidecarとしてPod内にInjectionしてくれる •

    様々な制御をkubectl applyできる(後ほどご紹介) • 便利なOSS同梱 • メトリクス (Prometheus/Grafana) • トレース (Jaeger/Zipkin) • サービスメッシュグラフの可視化(Kiali)
  6. 14.

    Install Use Helm? $ kubectl apply istio-demo.yaml Cluster has tiller?

    $ helm template istio | kubectl apply $ helm install istio Y Y おすすめはHelm使⽤。パラメタ設定が楽。 • incubator/istioはメンテが⽌まってるので使わない • istio.ioのdoc記載の最新版をdownloadして使おう N N
  7. 15.

    Sidecar Injection Manual istioctl kube-injectコマンドでSidecarを埋め込んだmanifestを出⼒する $ kubectl apply -f <

    ( istioctl kube-inject -f my-manifests.yaml ) Automatic 対象のnamespaceにラベルを設定しておくだけでOK! $ kubectl label ns my-ns istio-injection=enabled
  8. 16.

    Apply traffic rules kubectl apply –f my-virtualservice.yaml • VirtualService •

    a set of traffic routing rules • 宛先別に様々なruleを設定できる Istio setup is done, Letʼs Traffic Management !
  9. 19.
  10. 22.
  11. 25.
  12. 26.
  13. 29.
  14. 30.
  15. 33.

    hard-corded Timeout : 3sec Retry : 1 hard-corded Timeout :

    10sec Injected Delay : 7sec Chaos Engineering に使えそう︕ https://istio.io/docs/examples/bookinfo/
  16. 34.
  17. 35.

    Other Traffic Managements • Traffic Shifting • Circuit Breaking •

    Mirroring and more ! https://istio.io/docs/tasks/traffic-management/
  18. 36.
  19. 42.

    ssh port forwarding INGRESS_HOST=192.168.99.100 INGRESS_PORT=31380 ssh -fNL ${INGRESS_PORT}:${INGRESS_HOST}:${INGRESS_PORT} my-k8s •

    ローカルの31380ポートをnode(MinikubeのVM) 内の 31380ポートにforwarding • BookInfoは localhost:31380/productpage で⾒れる
  20. 46.
  21. 47.
  22. 49.
  23. 50.