AKS で Node に接続する (kubectl debug / Azure Portal)


AKS (Azure Kubernetes Service) のお勉強がてら Kubernetes 関連の記事を眺めていたところ、「Kubernetes: kubectl debug node でノードをデバッグする」という記事があり、やってみました。

本記事では AKS でやってみた情報を記載していますが、内側の詳細などは上記の記事のほうが詳しいため、ぜひ併せて読んでみてください。

環境

  • AKS (v1.20.5)
  • kubectl (v1.21.1)

kubectl debug コマンドを試す

接続用 Pod の作成

下記のコマンドを実行し、接続用の Pod を作成します。

> kubectl debug node/<NODE_NAME> -it --image=busybox

※debug オプションが見つからない場合

恐らく、kubectl のバージョンが古いです。アップデートしましょう。

ちなみに Windows 環境では Chocolatey 経由でもインストール可能です。パッケージ名は kubernetes-cli でした。

> choco install kubernetes-cli

Node のファイルシステムのマウント領域を見る

接続した Pod 内の /host 配下に Node のルートディレクトリがマウントされています。

/ # ls /host
NOTICE.txt   dev          lib          lost+found   opt          run          
srv          usr          vmlinuz.old
<略>

chroot する

/host に chroot することで、パス等の影響があるコマンド等も実行することができるようになります。

# chroot /host

Azure portal から Node に繋ぐには

と。ここで Azure Portal から AKS の個々の Node につなぐ方法も記載しておこうと思います。

AKS を作成した際、「Kubernetes サービス」が作成されたリソースグループには Node の実体のリソースは見つかりません。

ではどこにあるのかというと、同時に作成される別のリソースグループ (※) の配下に VM スケールセットが作成されており、そのインスタンスが Node のリソースになっています。

(※) このリソースグループ名は MC_<AKSリソースグループ名>_<AKSサービス名>_<AKSのリージョン>となっています。

「仮想マシンのスケールセット」のリソースをクリックし…

左ペインで [設計] - [インスタンス] をクリックすると、Node の一覧が表示されます。これらは VM インスタンスですね。

接続したい Node をクリックし、次の画面ではおなじみ VM (IaaS) の画面になるので、あとは [接続] をクリックして SSH で接続してやれば OK です。