Rancher2サーバが落ちていて起動しない時の対処(2021年皐月)
初めに
こんにちは、今更な感じもありますが、困っている人がいるかもしれないのと、自分の備忘録を兼ねて本書を記します。ご覧になっていただき、読者のみなさまに感謝します。
対象の読者
以下のような方々のお役にたてれば幸いです。
- rancher2を内部自己署名TLS証明書で動かしている
- 導入してから1年以上アップデートしていない
- 久しぶりに管理画面を見ようとしたらサーバが停止していた
- 更新方法がよくわからない
原因
Rancher内臓のTLS証明書の期限が1年間であり、放置していると切れてしまい、証明書不正で動作不可となった。これは再起動しても改善されない。
課題
既存Rancher環境での緒設定を壊してしまうと、最初からさ設定のやり直しになるので、正規の手順に従って作業する必要がある。
対処方法
Rancher2サーバのデータ領域からTSL証明書を削除し、新バージョンにアップデートすれば、TLS証明書も新規作成されて動作するようになる、さらにどのバージョンからかは忘れたが、再起動か何かで古いTLS証明書を再作成する機能が加わったようだ。
Rancher2 update tls
以下の記事を参考にして、順次アップデートしていく。
以下のようにして、処理をすすめる。
1.サーバの確認
rancher2サーバのバージョンを確認。
docker ps -a
出力の一例
rancher2サーバのIMAGE(イメージ名)は、「rancher/rancher:TAG」となっていて、大抵は最後の行に現れる。下の例では「rancher/ranchre:stable」となっており、NAMES(名称)は「rancher2-server」となっている。なお、名称は起動時の指定で好きにつけられるので、別の名前になっていることもある。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f4b50bdeed46 f29ece87a195 "run.sh" 13 seconds ago Exited (1) 13 seconds ago k8s_cluster-register_cattle-cluster-agent-db695c944-nwrlp_cattle-system_bab5ca79-ad23-4644-9373-c818ba29e69d_1739
. . . . .
7063f22dd646 rancher/rancher-agent:v2.3.5 "run.sh -- share-r..." 14 months ago Exited (0) 6 days ago share-mnt
9e2eee18a879 rancher/rancher:stable "entrypoint.sh" 14 months ago Restarting (1) 30 hours ago rancher2-server
バージョン確認
TAGがstableだと、実際のバージョンが不明なので、「docker inspect」 にて調査する。
docker inspect 9e2eee18a879 | grep "CATTLE_SERVER_VERSION"
# 出力例
"CATTLE_SERVER_VERSION=v2.3.5",
設定データの保存
「rancher2-server」コンテナを停止し、データを保存するコンテナ「rancher2-data」を作成する。
# stop rancher2-server
docker stop rancher2-server
# create volume as rancher2-data
docker create --volumes-from rancher2-server --name rancher2-data rancher/rancher:stable
データ確認
busyboxコンテナを利用し作成したボリューム内のデータを確認する。
# exec sh with volume
docker run -it --volumes-from rancher2-data -v $PWD:/backup busybox sh
# inspect 上記「busybox」コンテナ内部にて
ls -altr /var/lib/rancher/
# 出力例
total 4
drwxr-xr-x 4 root root 32 Jan 16 2020 k3s
drwx------ 8 root root 109 Jan 16 2020 management-state
-rw-r--r-- 1 root root 1 Jan 16 2020 .existing
drwxr-xr-x 4 root root 37 Jan 16 2020 .kube
drwxr-xr-x 5 root root 71 Jan 16 2020 .
drwxr-xr-x 3 root root 21 Sep 24 16:21 ..
バックアップ
busyboxから戻り、バックアップしてからアップデートする。
# backup
docker run --volumes-from rancher2-data -v $PWD:/backup busybox tar cvzf /backup/rancher-data-backup-ORG.tgz -C /var/lib/ ./rancher
busyboxの中でバックアップする場合
すでにバインドマントはされているので、、、
# backup in busybox
tar cvzf /backup/rancher-data-backup-ORG-in.tgz -C /var/lib/ ./rancher
アップデート
方針としては、現バージョンから始め、「最後のパッチバージョン=>マイナーバージョンアップ」を繰り返す。rancher独自のTLS証明書を使う場合は、古いTLS証明書を削除してからアップデートする。以下、ポート設定などは標準と異なるので、注意されたし。
例)v2.3.5=>v2.3.10=>v2.4.0=>v2.4.15=>. . . . .
# 変数設定
RC2_VER=v2.3.10
TODT=$(date +%y%m%d-%H%M)
# backup and clear tls
docker run --volumes-from rancher2-data -v $PWD:/backup busybox tar cvzf /backup/tls-back.tgz -C /var/lib/rancher/k3s/server ./tls
docker run --volumes-from rancher2-data -v $PWD:/backup busybox sh -c 'rm -r /var/lib/rancher/k3s/server/tls/*'
# rename old server
docker rename rancher2-server rancher2-server-old
# get newly image
docker pull rancher/rancher:${RC2_VER}
# start with volume
docker run -d --volumes-from rancher2-data \
--name=rancher2-server \
--restart=unless-stopped \
-p 81:80 -p 444:443 \
--privileged \
rancher/rancher:${RC2_VER}
動作確認
Rancher2の管理画面にアクセスして状況を確認する。
複数ノードでクラスタを組んでいる場合など、「cluster unavailable」が表示されて、クラスタ操作不能のトラブルとなる場合もある。
Rancher画面の、cluster -> edit で、
□etcd □controlplane □worker の3つを現状の設定に合わせてチェックして、
クラスタの中心ノードで、表示されたスクリプトを実行してみる。
自分の場合は、これでagentが実行され、環境が正常になった。
# スクリプトの一例
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.3.4 --server https://172.30.16.240:444 --token xhwwc2q9475pkz2tqlzzvrfs8mtltdkf2c8gk7gv8ztfhwzwch27n2 --ca-checksum 1aa4680ce04d83a774052634cc6fc23d0d6fe60bb59d5b9e058b40147d4fcdf8 --etcd --controlplane --worker
もし、まだ問題があるようなら、docker自体を再起動してみるとよい。起動中のコンテナも再起動になるので、サービス提供中の場合は、メンテの時間を確保してから注意して行うこと。
sudo systemctl restart docker
古いコンテナの削除
# remove old
docker rm -f rancher2-server-old
アップデートスクリプト
TLSの問題がない場合は、以下のようにしてアップデートを自動化できる。
RC2_VER=v2.4.0
# RC2_VER=v2.4.15
# RC2_VER=v2.5.0
# RC2_VER=v2.5.7
TODT=$(date +%y%m%d-%H%M)
# stop rancher2-server
docker stop rancher2-server
# backup
docker run --volumes-from rancher2-data -v $PWD:/backup \
busybox tar zcvf /backup/rancher-data-backup-bfr_${RC2_VER}-${TODT}.tgz -C /var/lib/ ./rancher
# rename old
docker rename rancher2-server rancher2-server-old
# get newly image
docker pull rancher/rancher:${RC2_VER}
# start with volume
docker run -d --volumes-from rancher2-data \
--name=rancher2-server \
--restart=unless-stopped \
-p 81:80 -p 444:443 \
--privileged \
rancher/rancher:${RC2_VER}
# remove old
docker rm -f rancher2-server-old
Docker領域のお掃除
なんやかんやで領域を食いつぶしている場合に、以下のように掃除してみるとよいかも。
system prune
不要なデータを削除
注意:rancher2-dataなどのVolumeコンテナは、実行中のコンテナからマウントされていないと消されてしまう
docker system prune
builder prune
dockerバージョンが 1.39 以上の場合1
docker builder prune
log files
ログ削除
sudo sh -c "ls -al /var/lib/docker/containers/*/*-json.log"
sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log"
参考リンク:
Author And Source
この問題について(Rancher2サーバが落ちていて起動しない時の対処(2021年皐月)), 我々は、より多くの情報をここで見つけました https://qiita.com/CinTAKE/items/1be1cc7724f52e90b0bf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .