GIG

赴くままに技術を。

AKSノードにnode-shellでログインする

AKSにてノード (仮想マシンスケールセットインスタンス) に接続するとき、Podをデプロイしてそれを経由し、ノードにアクセスが必要。 しかし、ちょっと面倒なので、kubectl-node-shellを使ってみる。

github.com

krewと呼ばれるkubectlのプラグイン管理ツールによりインストールできる。

❯ kubectl krew index add kvaps https://github.com/kvaps/krew-index
❯ kubectl krew install kvaps/node-shell

使ってみると、実行中のコンテナも見れたりする。

❯ kubectl get nodes       
NAME                                STATUS   ROLES   AGE   VERSION
aks-nodepool1-31996622-vmss000000   Ready    agent   9h    v1.18.10
aks-nodepool1-31996622-vmss000001   Ready    agent   9h    v1.18.10
akswinp000000                       Ready    agent   9h    v1.18.10

❯ kubectl node-shell aks-nodepool1-31996622-vmss000000
spawning "nsenter-bsxuel" on "aks-nodepool1-31996622-vmss000000"
If you don't see a command prompt, try pressing enter.

root@aks-nodepool1-31996622-vmss000000:/# docker ps -a
CONTAINER ID        IMAGE                                          COMMAND                  CREATED             STATUS              PORTS               NAMES
879f57bf3305        alpine                                         "nsenter --target 1 …"   16 seconds ago      Up 16 seconds                           k8s_nsenter_nsenter-bsxuel_default_74057696-8b44-49a1-bc5f-31e2666efc12_0
...(省略)...

動作としては、alpineイメージのコンテナから、nsenterコマンドにてpidが1を指定してノードに入っている。 そのため、Windows ノードでは残念ながら動作しなかった。

❯ kubectl get pods -o wide   
NAME             READY   STATUS              RESTARTS   AGE    IP            NODE            NOMINATED NODE   READINESS GATES
nsenter-21fo6d   0/1     ContainerCreating   0          138m   10.240.0.66   akswinp000000   <none>           <none>