Kubernetes ServiceとIngress

自分なりの理解を整理

参考文献: Kuubernetes完全ガイド

Serviceの役割

  • 固定エンドポイントの提供
    • KubernetesのPodは生まれては消える、名前もIPアドレスもコロコロ変わる。
    • そのため、サービスのエンドポイントにPodのIPアドレス指定すると現実的に運用できない。
    • Serviceを使えば、固定エンドポイントが作成される。
  • ロードバランス
    • 固定エンドポイントに紐づく複数のPod間でロードバランシングが行われる。
    • ServiceのロードバランスはL4レイヤ
    • L7でロードバランスしたいときは後述のIngressを使う

kind: Service の種類

KubernetesのPodへのアクセスのため使うもの

  • type: Cluster IP
  • type: NodePort
    • クラスタ外のホストからアクセス可能
    • 全ノードに対するExternalIPのようなもの
  • type: LoadBalancer
    • クラスタ外のホストからアクセス可能
    • 外部のLBリソースに対してIPをふる
    • GKE, EKS等は各自乗ってるクラウドのマネージドロードバランサと連携

Kubernetesリソース以外へのアクセスのために使うもの

  • type: ExternalName
  • type: Cluster IP(None Selector)
    • 何のPodにも紐付かない空のClusterIPを作成
    • 別途Endpointとして任意のIPを指定することでできる
      • PodのIPでもいいし、外部のサービスでもいい

kind: Ingress の種類

クラスタ外のロードバランサを利用するもの

  • GCP, AWSのマネージドL7ロードバランサを利用
  • バックエンドにはServiceを指定

クラスタ内にIngress用のPodをデプロイするもの

  • type: LoadBalancerのService経由でIngress用Podに転送
  • Ingress用PodがL7ロードバランス
  • バックエンドにはServiceを指定

うーんむずかしい