k3sクラスタを立ち上げたあとに、control-planeのIPアドレスを変えた時の対処方法
はじめに
k3s version v1.28.4+k3s2 (6ba6c1b6)
クラスタ立ち上げ後にIPアドレスを変えると…
自己署名の証明書のCNに新しいIPアドレスが含まれていないのでkubectl等がエラーになります。
1 | 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 ならば以下のようにする
1 | listener.cattle.io/cn-10.43.0.1: 10.43.0.1 |
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。