背景
練習用kubernetesであるkindは、以下3つのマニュフェスト(yaml)の組み合わせで公開設定しますが、意味がある組み合わせは主に3種類だと思うので共有しておきます
- cluster
- deployment
- service
環境
- Windows 11 Pro for Workstations 23H2
- WSL 2.3.26.0
- ubuntu 24.04.1 LTS (Windowsストア版)
- Docker version 27.3.1, build ce12230
意味ある組み合わせ
1.通信ポートでのサービス一切しない
|
cluster |
deployment |
service |
設定 |
なし |
なし |
なし |
- deployment-spec-template-spec-containers-port(またはpod のport)で公開設定しなければ、clusterやserviceに何書こうとも、podから何も公開されないので何書いても無意味です
2.cluster内のみ通信する
|
cluster |
deployment |
service |
設定 |
なし |
あり |
あり |
- deployment-spec-template-spec-containers-port(またはpod のport)だけ公開設定しても、IPが分からないと通信できないので、名前解決できるようにserviceもセットで設定しないと無意味です
- PODにWebサーバ立てても、クラスタ外に公開してないので、ホストOS上のchomeブラウザや、ubuntu上で動作してるgoogle-chrome等からも何も通じません
3.cluster外に公開する
|
cluster |
deployment |
service |
設定 |
extraPortMapping |
あり |
あり |
-
docker上で動作するkindにおいて、node-port設定しても外に出せないので無意味です
-
なので、clusterにextraPortMappingが必須
-
httpサービス動かしたpodへのアクセス状況は以下の通り
ホストOS(Win11)上のクロムブラウザから
|
localhost |
172.17.0.1(kind動作dockerの外IP) |
172.17.212.197など(HyperVネットワーク上のUbutnuIP eth0) |
応答 |
〇 (WSLのlocalhost forwarding経由) |
× |
〇 |
WSL上のgoogle-chromeから
|
localhost |
172.17.0.1(kind動作dockerの外IP) |
172.17.212.197など(HyperVネットワーク上のUbutnuIP eth0) |
応答 |
〇 |
〇 |
〇 |
- なお、隣のPCからもアクセスさせたいときは、ホストOS(Win11)にFierwallとPortfowardeingかければいけます(あくまで練習用という前提で)
- なるべくシンプルに書きたかったので割り切ってます。が、間違いのご指摘はウエルカムです m(_ _)m