以下の内容はhttps://zaki-hmkc.hatenablog.com/entry/2024/12/29/132205より取得しました。


[K3s] 手動のクラスターアップグレード備忘録

ドキュメント通りなので特に問題ないけどメモとして残してなかったので一応。

docs.k3s.io

概要

ポイントは「インストールした時と同一のオプションで」再度インストールスクリプトを実行すればOK
たとえば使用するIPアドレスなどを指定してインストールした場合は、同じオプションでインストールすること。なので構築時はコマンドラインオプションよりは設定ファイルを使ってインストールする方が良かったりする。

コマンドラインオプションを指定してインストールした稼働中のK3sクラスターのオプションは、基本的には/etc/systemd/system/k3s.serviceを見れば、ExecStartに記載があるはずなのでそこで確認できる。

ExecStart=/usr/local/bin/k3s \
    server \
        '--write-kubeconfig-mode' \
        '644' \
        '--cluster-cidr' \
        '172.28.0.0/16' \
        '--service-cidr' \
        '172.29.0.0/16' \
        '--kube-controller-manager-arg=node-cidr-mask-size=24' \
        '--kubelet-arg=max-pods=200'

例えば上記の通りであれば、(1.30.xから)1.31へのアップグレードのためのインストールオプションは以下。

curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.31.4+k3s1 \
  sh -s - \
  --write-kubeconfig-mode 644 \
  --cluster-cidr "172.28.0.0/16" \
  --service-cidr "172.29.0.0/16" \
  --kube-controller-manager-arg=node-cidr-mask-size=24 \
  --kubelet-arg=max-pods=200

指定可能なバージョンは https://update.k3s.io/v1-release/channelsstablelatestを見ればわかるが、ブラウザで開くのも面倒であればcurlする。

$ curl -s https://update.k3s.io/v1-release/channels | python -m json.tool | grep -m 1 latest
            "latest": "v1.31.4+k3s1"

アップグレード

before

zaki@cloud-dev2:~$ kubectl get node
NAME       STATUS   ROLES                  AGE    VERSION
rasp5-01   Ready    control-plane,master   155d   v1.30.5+k3s1

アップグレード

zaki@langres:~ $ curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.31.4+k3s1 sh -s -
[INFO]  Using v1.31.4+k3s1 as release
[INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.31.4+k3s1/sha256sum-arm64.txt
[INFO]  Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.31.4+k3s1/k3s-arm64
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Finding available k3s-selinux versions
sh: 416: [: unexpected operator
[INFO]  Skipping /usr/local/bin/kubectl symlink to k3s, already exists
[INFO]  Skipping /usr/local/bin/crictl symlink to k3s, already exists
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, already exists
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s

after

zaki@cloud-dev2:~$ kubectl get node
NAME       STATUS   ROLES                  AGE    VERSION
rasp5-01   Ready    control-plane,master   155d   v1.31.4+k3s1

アップグレードパス的には、Kubernetesと同様。
K3sとしてもマイナーバージョンを飛び級でアップグレードはサポートされていない。(1.31.xにアップグレードするには1.30.xから)

kubernetes.io

クラウドサービスのマネージドKubernetesだと新しいバージョンのノードと入れ替わる形でアップグレードするが、K3sの場合はインプレースアップグレードとなり、ノードはそのまま、動いてるノードのバージョンが更新される形になる。

そういえばK3sのドキュメントっていつのまにか日本語版が公開されてたのね。助かる。

docs.k3s.io




以上の内容はhttps://zaki-hmkc.hatenablog.com/entry/2024/12/29/132205より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14