kubectl port-forwardでクラスタ外からPodにアクセスする
Cluster内にIngressを立てたがうまく動作しないことがあり、デバッグのためPod内のアプリケーションにアクセスしたいと思った。今までは、テスト用のPodを立ててその中からcurl等でリクエストを送っていた。
kubectl run test-pod --image nginx -- /bin/sh -c 'curl <target_pod's_ip_address>'
しかし、 kubectl port-forward
コマンドを使うことで、テスト用Podなしでデバッグができることを教えてもらった。
kubectl port-forward <target_pod's_name> 8080:80
このようにすることで、ホストの8080番ポートがPodの80番ポートにPort-forwardingされるため、 localhost:8080
でアクセスが可能になる。ブラウザで見られるのがありがたい。
kubectl port-forward
のオプションにはServiceも指定できるが、内部的にはPodを指定するのと同じであり、ClusterIPを通さず直接Podにアクセスしていることに注意したい。ClusterIPにアクセスしたい場合は以下の記事が参考になる。