netcatのzero I/Oモードで疎通確認する
疎通確認をする際はcurlかwgetを使うことが多かったが、CKADの講座で講師がnetcatを使っているのを見て調べてみた。
netcatはサービスとの通信を確認できるコマンドであり、たいていのLinuxディストリビューションに同梱されている。KubernetesのPodに入ってコマンドを打つ場合、imageにcurlが入っていないというようなことも多いので、使えるようにしておくと便利かもしれない。
netcatでの通信は、基本的に相手のホスト名とポートを指定すればよい。
nc google.com 80
これに加え、netcatではzero I/Oモードを使ったポートスキャンを行うことができる。これはパケットを飛ばさず、相手のポートに接続できるかのみを確認するモードで、接続に成功すればすぐに接続が閉じられる。実際にデータのリクエスト・レスポンスをすることがないので、疎通確認に適している。
CKAD講座では、Podの中からService名を指定して疎通できるか確認していた。
nc -z -v -w 1 service-name 80
-z
でzero I/Oモードを使える。 -v
は詳細な出力をするオプション。 -w
はタイムアウト判定までの秒数を指定するもので、これを指定しないと接続に失敗した場合コマンドが終了しない。