Upgrade to Pro — share decks privately, control downloads, hide ads and more …

雰囲気で語るKubernetesネットワーク

D637d86990571c01ea0fd098a2bdfa33?s=47 ttakada
April 24, 2019

 雰囲気で語るKubernetesネットワーク

D637d86990571c01ea0fd098a2bdfa33?s=128

ttakada

April 24, 2019
Tweet

Transcript

  1. None
  2. https://www.slideshare.net/HirokiSakonju/kubernetes-virgin-is-permitted-until-2017

  3.  雰囲気で語る  Kubernetesネットワーク 髙田 知典

  4. ワークロード処理実行単位の変遷

  5. なぜコンテナ https://www.docker.com/resources/what-container • はやい • オーバーヘッドすくない • 管理が簡単(???)

  6. • コンテナオーケストラエンジン ◦ コンテナのデプロイ ◦ スケーリング • 環境 ◦ ローカル

    ▪ Minukube ◦ 構築 ▪ Kubeadm ▪ Rancher ◦ マネージド ▪ GKE(Google Kubernetes Engine) ▪ AKS(Azure Kubernetes Service) ▪ EKS(Elastic Container Service for Kubernetes)
  7. Cluster https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/ • Master ◦ API Server • Node ◦

    コンテナが動くホスト(物理ホスト/仮想マシ ン)
  8. Node https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/#pods-overview • 物理/仮想マシン • 一つのNodeに複数のPod

  9. Pod • Kubernetes上のコンテナ管理単位 • 1個以上のコンテナで構成される • (内部)IPアドレスは、Podに割り当てら れる ◦ コンテナ単位には割り当てられない

    ◦ Pod内では、コンテナはIPアドレス と Port番 号空間を共有する = 一つの Pod内のコン テナは重複するPort番号を使えない https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/#pods-overview
  10. ネットワーク通信の種類 • コンテナ間通信 • Pod間通信 • Service通信 • Ingressによる通信

  11. コンテナ間通信 Node Network (External) Pod Network (Internal) Node Pod Pod

    localhost宛 通信 Pod宛通信 NIC NIC lo0
  12. NodeをまたがるPod Network Node Network (External) Pod Network (Internal) Node Pod

    Pod Pod Node オーバーレイ ネットワーク NIC NIC NIC
  13. CNI(Container Network Interface) • CNI は コンテナにネットワーク接続を提供することにフォーカスした仕様とライブラ リ (libcni) と参照実装の

    CNI プラグインなどから構成 • Flannel ◦ VXVLAN / Host GW(IPルーティング) • Project Calico • Canal • NSX-T Container Plugin https://www.slideshare.net/motonorishindo/cni-124981353
  14. Service • Podをまとめたグループ • Pod宛の通信用にエンドポイントを提供して、Pod、Nodeの存在を抽象化 ◦ PodのIPアドレスを意識する必要性をなくす • 以下の機能を提供 ◦

    Pod宛トラフィックのL4ロードバランシング ◦ ラベルを利用したPodのサービスディスカバリ ◦ クラスタ内DNS Service IPとDNS名が付与
  15. Serviceの種類 • LoadBalancer ◦ クラスタ外で提供されている Load Balancerの仮想IPアドレス • ClusterIP ◦

    Kubernetes Cluster内でのみ疎通可能な仮想 IPアドレス • ExternalIP • NodePort ◦ 全Nodeのアドレス(0.0.0.0) • Headless • ExternalName • None-Selector
  16. Service Node Network (External) Pod Network (Internal) Node Pod Pod

    Pod Node Endpoint (Load Balancer) Endpoint (Cluster IP) NIC NIC NIC
  17. クラスタ内DNSとクラスタ外DNS Node Network (External) Pod Network (Internal) Node Pod Pod

    Pod Node Pod クラスタ内DNS Serviceエンドポイ ント名が自動登録さ れる その他の名前は、 外部に再帰問い合 わせ
  18. Ingress • L7ロードバランシング (パスベースルーティング/HTTPS終端等) • IngressリソースとIngress Controllerで構成 • クラスタ外のロードバランサの利用 ◦ GKE

    Ingress • クラスタ内にIngress用のPodをデプロイ ◦ Nginx Ingress ▪ kubernetes/ingress-nginx, nginxinc/kubernetes-ingress with NGINX, nginxinc/kubernetes-ingress with NGINX Plus ◦ HA Proxy など
  19. クラスタ外 Ingress Node Network (External) Pod Network (Internal) Node Pod

    Pod Pod Node NIC NIC NIC Ingress /path1: Service A /path2: Service B Node Port Service A Node Port Service B
  20. クラスタ内 Ingress Node Network (External) Pod Network (Internal) Node Pod

    Pod Pod Node NIC NIC NIC Endpoint (Load Balancer) Pod NIC Ingress Controller Pod /path1: Service A /path2: Service B
  21. まとめ • Kubernetesでは、内部(Pod)ネットワークと外部(Node)ネットワークとで構成される • PodはServiceとしてグループ化されて、Serviceのエンドポイント(DNS名/IPアド レス)宛の通信は、Pod(コンテナ)へ、L4ロードバランスされる • Ingressは、L7ロードバランスを提供 ◦ Kubertesクラスタ外に配置する構成 (※実質 

    GKE Ingressのみ) ◦ Podとして配置する構成