--- lang: ja breaks: false --- <style> .ui-infobar, #doc.markdown-body { max-width: 75vw; } </style> # 2021-03-24 続・KubeproxyのService周りの動き ## 検証 Deployment ``` apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 ``` Service ``` apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 9376 ``` ``` apiVersion: v1 kind: Service metadata: name: my-service2 spec: type: NodePort selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 9376 nodePort: 30080 ``` ## 前回まででわかったこと - ClusterIPでServiceを作ると2つのチェインがNAT Tableに作成される - KUBE-SVC-XXX => 1つのサービスに対応 - KUBE-SEP-XXX => 1つのEndpointに対応、多分Service End Point - KUBE-SVC-XXXの下に複数KUBE-SEP-XXXがぶら下がっていてprobabilityモジュールのマッチでロードバランスされる - NodePortは作成するとClusterIP + NATのルールが入る - 外側からの通信はMARK-MASQでSNATしつつ - あとはClusterIPと同じ仕組みでDNATする - externalTrafficPolicy - Cluster/Local共に期待通り - minikubeの場合だとnode間通信がないのでClusterにして他のノードにあるエンドポイントが選択された場合単に通じない - なんならIPアドレスもかぶる - hostPort - ただ単にNode IP => Pod IPのDNATが入る - minikubeの場合だとdockerのデフォルトネットワークにPort forwardのルールが入る - headless service - ClusterIPがないService - iptables的には何もない - Podless service (セレクタに何もマッチしない等) - filter tableにClusterIP => REJECTのルールが入る - icmp-port-unreachableが届く - ExternalIP (Service Typeではない) - 何に使うかあんまりわからない - 内部からの場合 - そのままserviceチェインに飛ばされる - 外部からの場合 - ExternalIPをNodeが持っている場合 - そのままserviceチェインに飛ばされる - ExternalIPをNodeが持っていない場合 - 一旦MASQされる?
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up