機雷がなんだ! 全速前進!

SEというかプログラマというか、日々のエンジニア生活の中で体験したことなどを中心に書きためていくことにする。

pod内からncコマンドで疎通確認する方法

f:id:orinbou:20200510225328p:plain

k8sのトラブルシュートなどでpodから疎通確認する方法についての簡単なメモです。
時々しか使わないので、時間が経つと100%忘れるのでここにメモを残しておきます。

nc コマンドの説明

NetcatはHobbit氏によって開発された、汎用TCP/UDP接続コマンドラインツールです。
ncコマンドはNetcatの略。非常に多機能なツールですが、今回は一部機能のみ使用します。

(外部接続の疎通確認の)コマンド実行の書式は下記です。

nc [-オプション] 接続先 ポート番号

疎通確認時によく使うオプションは下記です。

オプション 覚え方 説明
-z zero I/Oの[z] ゼロI/Oモード(ポートスキャン時)
-v verboseの[v] (多弁:verbose)情報表示モード
-w secs waitの[w] タイムアウトwait時間(秒数指定)

podからncコマンドで疎通確認する方法

まず、疎通確認したい pod(接続元) へ入ります。

$ kubectl exec -it webapp-color -- sh

次に、疎通確認したい pod / service (接続先)へ nc コマンドを実行します。

疎通OKの場合

# nc -z -v -w 3 secure-service 80
secure-service (10.108.84.141:80) open

疎通NGの場合(※タイムアウト)

# nc -z -v -w 3 secure-service
nc: secure-service (10.108.84.141:0): Operation timed out

上記は、CKA / CKAD のトラブルシュート試験でよく出題されて焦るやつなので覚えておくと吉。

参考URL

この記事を書くにあたり下記の情報を参考にさせていただきました。