k8sでクライアントのソースIPを維持するのは結構大変ということがわかってきた。
- ClusterIP: クラスタ内からのみアクセス可。NATしない
- NodePort(デフォルト): クラスタ外からのトラフィックを受信可。NATする
- NodePort(externalTrafficPolicy: Local): Podが起動しているノードに接続すればアクセス可。NATしない。Podが起動していないノードに来たトラフィックは破棄
- LoadBalancer(デフォルト): NATする
- LoadBalancer(externalTrafficPolicy: Local): NATしない。Podが起動していないノードはヘルスチェックが通らないので振り分けられない。GCPかAzureでのみ使える。