エラー:Couldn't attach to pod, falling back to streaming logs

2025/01/24に公開

自分のVagrantのVM上でK8sクラスタを構築していたのですが、Busyboxコンテナを作ってコンテナに入る時に以下のエラーが出ました。

Couldn't attach to pod, falling back to streaming logs: unable to upgrade connection: pod does not exist

これだとトラブルシューティング用のログさえ見れず、手も足も出ません。

原因

これはIPアドレスのコンフリクトによるものだそうです。

たしかに自分のクラスタのノードは以下のように全て10.0.2.15でIPが固定されていました。

vagrant@controlplane:~$ kubectl get pods -o wide -n kube-flannel
NAME                    READY   STATUS     RESTARTS   AGE    IP          NODE           NOMINATED NODE   READINESS GATES
kube-flannel-ds-56swz   0/1     Init:0/2   0          8s     10.0.2.15   node02         <none>           <none>
kube-flannel-ds-d2pzx   1/1     Running    0          107s   10.0.2.15   controlplane   <none>           <none>
kube-flannel-ds-jrpvn   0/1     Init:1/2   0          14s    10.0.2.15   node01         <none>           <none>

解決方法

kubeletの環境変数を更新する必要があります。

sudo vi /etc/default/kubelet

マスターノードの場合は以下のように設定します。

- KUBELET_EXTRA_ARGS=
+ KUBELET_EXTRA_ARGS=--node-ip=192.168.56.11

kubeletをリスタートします。

sudo systemctl restart kubelet

すべてのノードで完了したら一応確認します。

vagrant@node02:~$ kubectl get nodes -o wide
NAME           STATUS   ROLES           AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME
controlplane   Ready    control-plane   44m   v1.32.1   192.168.56.11   <none>        Ubuntu 22.04.5 LTS   5.15.0-130-generic   containerd://1.7.12
node01         Ready    <none>          42m   v1.32.1   192.168.56.21   <none>        Ubuntu 22.04.5 LTS   5.15.0-130-generic   containerd://1.7.12
node02         Ready    <none>          42m   v1.32.1   192.168.56.22   <none>        Ubuntu 22.04.5 LTS   5.15.0-130-generic   containerd://1.7.12

これでBusyboxコンテナが立ち上がるようになりました。

参考

こちらが参考になりました。

https://blog.techiescamp.com/docs/couldnt-attach-to-pod/

Discussion