✨
Vagrantで構築したK8sクラスタにNodeportからアクセスをする
今回はVagrantで構築したK8sクラスタにNodeportのサービスを作り、ノードを横断してリクエストが送られることを確認する。
もともとのVagrantfileはこちら。
加えた変更点はこちらで見れる:
まず、Vagrantfileを以下のように変更して外部からアクセスできるようにする。
node.vm.network "forwarded_port", guest: 30785, host: "123#{i}"
Vagrant内でNodeportサービスを作成する。
$ cat svc-np.yml
apiVersion: v1
kind: Service
metadata:
name: web-service-np
spec:
selector:
app: web
ports:
- protocol: TCP
port: 80
type: NodePort
Applyする。
kubectl apply -f svc-np.yml
ホストマシンからCurlを投げてみる。
curl localhost:1231 # or curl localhost:1232
<!DOCTYPE html>
<head> [0/297]
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
結果をゲットできた。
各Nginxの初期ページを以下のように変えてみる。
for pod in $(kubectl get pods | awk 'NR > 1 {print $1}' | grep web-deploy); do kubectl exec $pod -- /bin/sh -c "hostname>/usr/share/nginx/html/index.html"; done
kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 2 (26m ago) 16d 10.244.2.12 node02 <none> <none>
web-deploy-66fbbff65d-cxcjc 1/1 Running 2 (27m ago) 4d19h 10.244.1.14 node01 <none> <none>
web-deploy-66fbbff65d-f6bgd 1/1 Running 2 (26m ago) 4d19h 10.244.2.11 node02 <none> <none>
web-deploy-66fbbff65d-ghklh 1/1 Running 2 (27m ago) 4d19h 10.244.1.13 node01 <none> <none>
これでリクエストをNode02に投げてみる(Node02はポート1232を開放している。)
while true; do curl localhost:1232; sleep 1; done
node01の ...ghklh
, ...cxcjc
にも分散されていることがわかる。
web-deploy-66fbbff65d-ghklh
web-deploy-66fbbff65d-cxcjc
web-deploy-66fbbff65d-ghklh
web-deploy-66fbbff65d-f6bgd
web-deploy-66fbbff65d-ghklh
web-deploy-66fbbff65d-ghklh
web-deploy-66fbbff65d-cxcjc
web-deploy-66fbbff65d-f6bgd
web-deploy-66fbbff65d-f6bgd
このことからサービスはkube-proxyと連動してノード横断でポッドにリクエストを分配することがわかる。
Discussion