実施すること
実施しないこと
参考
名前 |
概要 |
クラスター内アクセス |
クラスター外アクセス |
ClusterIP |
クラスター内で通信用 |
O |
X |
NodPort |
ノードのIPとポートを指定しアクセスするが、ノードのダウン等ではアクセス不可となる |
X |
O |
LoadBalancer |
クラスター内外からアクセス |
O |
O |
Service
Service
- ClusterIP(クラスタ内からアクセス)
- PodIPを抽象化しStaticIPを持ったProxyを配置
- Podアクセスするときにロードバランスする
- DNS(CoreDNS)にAレコードを登録する
詳細
ClusterIP
NodePort
- クラスターの外からアクセス可能
- NodeのIPからクラスターIPを経由してpodにアクセス
- NodeのIPとポートを知っている必要があり、ポートは30000以上
- NodeのIPを知る必要がある
LoadBalancer
- クラスター内外からアクセス
- 一つのサービスごとにLBが生成される
- L4のロードバランサーのためL7のHTTPパスでの振り分けが不可
Headless
- DNSラウンドロビンの機能を提供した場合に使用
- ClusterIPにNoneを指定したサービスをヘッドレスサービスと呼ぶ
kubectl expose deploy nginx --cluster-ip None
- ロードバランサを作らない
- DNSにはPodのアドレスが設定される
Headlessの使い道
- Statefulsetを使うときに必要
- Statefulset
- podを複数生成
- podそれぞれにパーシステントボリュームが作られる
- どのpodにアクセスするかによってレスポンスが変わる
Podに設定されるresolv.conf
[tsubame@control-plane01 ~]$ kubectl -n default exec deployments/nginx -- cat /etc/resolv.conf
search default.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.96.0.10
options ndots:5
[tsubame@control-plane01 ~]$
名前解決
- 全てのサーチリストを試行して名前解決に成功
- forward proxyとかだとすごくパフォーマスが低下する
- そのため、podごとにresolv.confをカスタマイズすることがほぼ必須
resolv.confのカスタマイズ