Talos
お疲れ様です。おれちゃんでござる!
前回はTalosのこと説明しましたので今回はTalosのアップグレードの仕方をしょうかいしたいと思っております!k8sのベアメタルクラスターのアップグレードはなかなか難しいなのでTalosでどれだけ簡単にできるかお楽しみにしてください。
一般のK8sクラスターアップグレード
kubeadmというツールでアップグレードできますがその前にノード一台ずつクラスターから外しないといけないです。以下のステップになります。
アップグレードするバージョンの確認
OSのパッケージマネージャーを使用して、Kubernetes 1.30の最新パッチバージョンを確認します。
sudo yum list --showduplicates kubeadm --disableexcludes=kubernetes
コントロールプレーンノードのアップグレード
- アップグレードは1つのコントロールプレーンノードずつ実行します。
- 最初のノードで
kubeadm upgrade
を実行します。
成功すると「[upgrade/successful] SUCCESS!」と表示されます。sudo kubeadm upgrade apply v1.30.x
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クラスターのアップグレードのやり方を紹介できました。最近アップグレード作業してたので是非紹介したかったことでした。
また次に機会に
お楽しみにしてね ^^💦