Talosのk8sクラスターアップグレード

レイ
2025-03-03
2025-03-03

taloslogoTalos

お疲れ様です。おれちゃんでござる!

前回はTalosのこと説明しましたので今回はTalosのアップグレードの仕方をしょうかいしたいと思っております!k8sのベアメタルクラスターのアップグレードはなかなか難しいなのでTalosでどれだけ簡単にできるかお楽しみにしてください。

一般のK8sクラスターアップグレード

kubeadmというツールでアップグレードできますがその前にノード一台ずつクラスターから外しないといけないです。以下のステップになります。

アップグレードするバージョンの確認

OSのパッケージマネージャーを使用して、Kubernetes 1.30の最新パッチバージョンを確認します。

sudo yum list --showduplicates kubeadm --disableexcludes=kubernetes

コントロールプレーンノードのアップグレード

  1. アップグレードは1つのコントロールプレーンノードずつ実行します。
  2. 最初のノードでkubeadm upgradeを実行します。
    sudo kubeadm upgrade apply v1.30.x
    成功すると「[upgrade/successful] SUCCESS!」と表示されます。

CNIプロバイダーの手動アップグレード

CNIプロバイダーが必要に応じてアップグレードする手順を確認し、指示に従ってください。

ノードのドレイン

メンテナンスのためにノードをスケジューリング不可にし、ワークロードを退避させます。

kubectl drain <node-to-drain> --ignore-daemonsets

kubeletとkubectlのアップグレード

kubeletとkubectlをアップグレードします。

sudo yum install -y kubelet-'1.30.x-*' kubectl-'1.30.x-*' --disableexcludes=kubernetes

kubelet再起動

sudo systemctl daemon-reload
sudo systemctl restart kubelet

ノードの復旧

ノードを再度スケジューリング可能にします。

kubectl uncordon <node-to-uncordon>

ワーカーノードのアップグレード

1つまたは複数のワーカーノードをアップグレードし、最低限必要なキャパシティを確保します。

クラスターの状態確認

全てのノードが「Ready」と表示されるか確認します。

kubectl get nodes

なかなか長い手順ですし失敗の可能性結構あります。特にetcdというデータベースはとても重要で何かの間違いで壊してしまったらおしまいです。

Talosでk8sクラスターアップグレード

今回はとても簡単です!

OSの部分をアップグレード

Talosがインストールされているノードはもう直接SSHで接続することかできなく、talosctlで内部を操れます。アップグレードもそうです。

  $ talosctl upgrade --nodes <ノードIP> --image ghcr.io/siderolabs/installer:v1.7.6

でTalosのOSパーツをアップグレードします。
これはもちろんノード毎にコマンド走らせないといけないです。

k8sアップグレード

k8sはupgrade-k8sコマンドでアップグレードできます。

これ以外やることないです。とても便利でしょう?

最後に

これでTalosを使っているk8sクラスターのアップグレードのやり方を紹介できました。最近アップグレード作業してたので是非紹介したかったことでした。

また次に機会に

お楽しみにしてね ^^💦