今回はrkeのバージョンアップをおこなっていきます。
まずは現状のスナップショットを作成します。
rke etcd snapshot-save --config cluster.yml --name pre-upgrade-20221021
すると、/opt/rke/etcd-snapshots/
配下にスナップショットが作成されます。
続いてサポートされているrkeのバージョンを確認します。
rke config --list-version --all
v1.18.10-rancher1-1
v1.17.13-rancher1-1
v1.19.3-rancher1-1
v1.16.15-rancher1-2
現状の利用バージョンを確認します。:
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
xx.xx.xxx.xx Ready controlplane,etcd,worker 165d v1.19.3 172.31.44.161 <none> Ubuntu 18.04.6 LTS 5.4.0-1086-aws docker://19.3.15
rkeのバージョンは1.19.3みたいです。
さっきのリストを見る限り、v1.19.3-rancher1-1
の方が新しいのでそれにUpgradeしてみます。
ということでcluster.yml
を更新します。kubernetes_version
を追記します。
追記したのが以下となります。
nodes:
- address: xx.xx.xx.xx
internal_address: 172.31.44.161
user: ubuntu
role: [controlplane,etcd,worker]
addon_job_timeout: 120
kubernetes_version: "v1.19.6-rancher1-1" ##ここが追記箇所
本当に初心者の設定ファイルという感じで全くオプションが設定されていませんね。
まぁ仕方ないでしょう。
これで準備は完了したので、ついにUpgradeしていきます。
コマンドは簡単、rke up
を入力するだけです。
一通りのログがながれ、最後にこのログが流れたので成功したようですね。
INFO[0124] Finished building Kubernetes cluster successfully
それでは、バージョンの確認を行います。
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
xx.xx.xx.xx Ready controlplane,etcd,worker 165d v1.19.6 172.31.44.161 <none> Ubuntu 18.04.6 LTS 5.4.0-1086-aws docker://19.3.15
バージョンがv1.19.6
に変更されているので成功ですね。
ただ、この手順ではrke config --list-version --all
コマンドで出力されるバージョンにしかバージョン変更ができません。
一気にv.1.24とかにあげたかったんですが、どうすればいいのか。。。
rkeのドキュメントを確認する限り、system_image
を設定するとあったんですが、どうもダウングレードに対応しているのかな、という感じで、指定してもうまくいきませんでした。
追記(2022/10/26)
上の手順ではリストに出たRKEのバージョンにしかupgradeができません。
しかし、それでは困る、ということでupgradeをしなければなりません。
それをするにはrkeコマンドラインツールのupgradeが必要になります。
では、まず、現状のバージョンを確認します。
rke -v
rke version v1.2.4
前回勘違いしていたのが、k8sのv1.24にupgradeしたかったのでrkeコマンドラインツールもv1.24をインストールしてしまいました。
RKEのバージョンはそこと連動しているわけではなく、今はv1.3台がリリースされているのでもっと最新のがあったんですよね。
古いrkeツールを利用していたので古いk8sバージョンしか使えなかったということになります。
ということでまずは古いRKEツールを削除します。
sudo rm -r /usr/local/bin/rke
そして再度rkeコマンドラインツールをインストールします。今回はv1.13.15をインストールします。
sudo wget -O /usr/local/bin/rke https://github.com/rancher/rke/releases/download/v1.3.15/rke_linux-amd64
実行権限を与え、バージョン確認を行います。
sudo chmod +x /usr/local/bin/rke
rke -v
rke version v1.3.15
正しくインストールされているので、このバージョンで扱えるk8sバージョンを確認します。
rke config --list-version --all
v1.20.15-rancher2-2
v1.19.16-rancher2-1
v1.22.13-rancher1-1
v1.24.4-rancher1-1
v1.18.20-rancher1-3
v1.23.10-rancher1-1
v1.21.14-rancher1-1
k8sの1.24が扱えるのでこちらを指定します。
後の手順は同じです。
バックアップをとって、cluster.ymlを編集してあげて、rke up
を実行します。
処理が完了したのでバージョンを確認してみます。
kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
xx.xx.xx.xx Ready controlplane,etcd,worker 170d v1.24.4 172.31.44.161 <none> Ubuntu 18.04.6 LTS 5.4.0-1088-aws docker://19.3.15
バージョンがv1.24.4と表示されているので問題ないですね。これで目的達成です。
rkeのバージョンとk8sのバージョン対応についてはgitから確認してください。
https://github.com/rancher/rke/releases