# NodePortを作成 $ kubectl expose deployment test-deployment --port=80 --type=NodePort $ kubectl get service test-deployment NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE test-deployment NodePort 10.107.114.198 <none> 80:31307/TCP 4m21s
上記Deploymentにアクセスするには、ノードのIPアドレスを調べる必要があります。minikubeではコマンドが用意されており、minikube ip で調べられます。 実態はminikubeノードとして起動しているDockerコンテナのアドレスです。
1 2 3 4 5 6 7 8 9 10 11 12 13
$ minikube ip 192.168.49.2
$ docker exec -it minikube ip -4 a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever 69: eth0@if70: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link-netnsid 0 inet 192.168.49.2/24 brd 192.168.49.255 scope global eth0 valid_lft forever preferred_lft forever
$ kubectl get service test-deployment NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE test-deployment LoadBalancer 10.108.139.68 <pending> 80:31284/TCP 70s
$ minikube tunnel
# EXTERNAL-IPが払い出されている $ kubectl get service test-deployment NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE test-deployment LoadBalancer 10.108.139.68 10.108.139.68 80:31284/TCP 2m35s
$ minikube start --nodes 2 $ kubectl get node NAME STATUS ROLES AGE VERSION minikube Ready control-plane,master 9m53s v1.22.1 minikube-m02 Ready <none> 9m35s v1.22.1
下のマニフェストでPod Anti Affinityを使ってみます。このDeploymentでは2つのPodが作成されますが、別々のノードに配置される設定になっています。