3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HA構成のk8sクラスタで、既存のマスターノードを再構築する

Posted at

はじめに

以前の記事で作成したHA構成のk8sクラスタの一部がサーバーの物理的な移動の際に壊れてしまい、復帰に手間取ったので記しておきます。

ただ再構築したいだけであれば対象のマスターノードで sudo kubeadm reset で済むようなのですが、今回はそのサーバーにアクセスできない状態になってしまったので、手動で色々と削除していきます。

この手順無しで kubeadm join でマスターノードを追加しようとすると、

[check-etcd] Checking that the etcd cluster is healthy

が長時間続き、その後エラーが出ます。
etcd に古いノードが登録されていて、それにアクセスしに行こうとしてタイムアウトしているようです。
同じIPでマスターノードを再構築しようとしていても、そのノードが立ち上がる前(joinの段階で)にアクセスに行くのでエラーが出てしまいます。

参考

基本的にはここに書いてあるままですが、一部古い記述があったので更新していきます。

ノードを削除する

他のマスターノードから、アクセス不可になったマスターノードを削除します。

kubectl delete node <master>

etcd クラスタから対象のノードを削除する

まず etcd をDLしてきます。
ほぼ参照先と一緒ですが、バージョンを最新にするのと、今回の環境はARMではなくAMD上で動いているのでそこを変更しました。

mkdir /opt/tools && cd /opt/tools
wget https://github.com/etcd-io/etcd/releases/download/v3.4.14/etcd-v3.4.14-linux-amd64.tar.gz
tar xfz etcd-v3.4.14-linux-amd64.tar.gz

実行します。

cd /opt/tools/etcd-v3.3.12-linux-arm64
sudo ./etcdctl --endpoints https://192.168.0.11:2379 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key member list
sudo ./etcdctl --endpoints https://192.168.0.11:2379 --cacert /etc/kubernetes/pki/etcd/ca.crt --cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key member remove 86a89c4f9f2bf9f3

etcdctl member list で対象ノードのIDを取得し、 etcdctl member remove で削除します。

kube-configを書き換える

kube-config の中にもマスターノードの情報が残っているので、削除します。

kubectl edit configmap kubeadm-config -n kube-system
  ClusterStatus: |
    apiEndpoints:
      master-1:
        advertiseAddress: 192.168.0.11
        bindPort: 6443
      master-2:
        advertiseAddress: 192.168.0.12
        bindPort: 6443
      master-3:
        advertiseAddress: 192.168.0.13
        bindPort: 6443

対象ノードの箇所を削除してください。

新しいマスターノードをjoinさせる

ここまで来たら、後はこの記事の手順のように kubeadm join を実行するだけです!

終わりに

kubeadm を使用してクラスタを構築しているので、 etcd という根幹を成すコマンドを触る事にびびってしまいましたが、何とか復帰できました。
そこそこな時間を悩んでしまったので、この記事が誰かの10分、1時間、半日を節約するための足掛かりになれれば幸いです。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?