🆔

k3sクラスタを立ち上げたあとに、control-planeのIPアドレスを変えた時の対処方法

2023/12/10に公開

はじめに

k3s version v1.28.4+k3s2 (6ba6c1b6)

クラスタ立ち上げ後にIPアドレスを変えると…

自己署名の証明書のCNに新しいIPアドレスが含まれていないのでkubectl等がエラーになります。

Unable to connect to the server: tls: failed to verify certificate: x509: certificate is valid for 192.168.1.123, 10.43.0.1, 127.0.0.1, ::1, not 新しいIPアドレス

解決策

https://github.com/k3s-io/k3s/issues/1381#issuecomment-1067141504

上記に書かれている通り…
以下の操作は、すべてk3sのコントロールプレーンのノードで実行する。

secrets/k3s-serving の変更

kubectl -n kube-system edit secrets/k3s-serving

エディタが開く。以下のような行があるので新しいIPアドレスを追加する。
例えば、追加したいIPアドレスが 192.168.123.234 ならば以下のようにする

    listener.cattle.io/cn-10.43.0.1: 10.43.0.1
    listener.cattle.io/cn-127.0.0.1: 127.0.0.1
    listener.cattle.io/cn-192.168.123.234: 192.168.123.234  // この行追加

k3s 停止

証明書を作り直すので一旦k3sを止める

sudo systemctl stop k3s

証明書作り直し

sudo k3s certificate rotate

k3s 開始

sudo systemctl start k3s

リモート接続が必要なPCに証明書をコピーしなおし

sudo cat /etc/rancher/k3s/k3s.yaml の中身を必要なPCにコピーして、IPアドレスを書き換える。 k8sクラスタが一個しかないのであれば、 .kube/config にコピーすればOK。

コピー後、 kubectl get nodes して表示されればOK。

Discussion