Seaos概要と利用シーン
Seaosは、Kubernetesクラスターの作成から運用・破棄までを一元管理するCLIツールです。コンポーネントを極限まで削ぎ落としたベアメタル状態からの導入が可能であり、専用ClusterImage機構を通じてRDBMSやメッセージブローカーなどの上層ミドルウェアを自動配置できます。開発用シングルノードから数百~数千ノード規模のHA構成までシームレスに移行でき、ネットワーク分断環境や定期的なスナップショット取得、柔軟なスケールアウト操作にも堅牢に対応しています。
ノード要件と初期ネットワーク設定
本手順では、1台のコントロールプレーンと2台のワーカーを持つ3ノード構成を基準に解説します。各ホストはRocky Linux 8系で統一し、初期起動時にDNS解決不要な静的IPマッピングを適用します。
# 全ノードで実施するhostname定義
cat <<'HOSTS_EOF' > /etc/hosts
10.10.20.11 mgr-k8s-master
10.10.20.12 calc-k8s-node-a
10.10.20.13 calc-k8s-node-b
HOSTS_EOF
マスターノードの設定を他の計算ノードへ反映させます。
# マスター側からワーカーへ一斉同期
for TARGET in calc-k8s-node-a calc-k8s-node-b; do
scp /etc/hosts root@${TARGET}:/etc/
done
システムクロン同期の設定
Kubernetesのetcdおよびコントローラー管理コンポーネントは、ノード間の時刻差分が一定値を超えると健全な振る舞いを保障できません。以下の設定でNTPエージェントを有効化します。
dnf install chrony -y
sed -i '/^pool 2\.rocky\.pool\.ntp\.org/i server ntp.jst.mfeed.ad.jp iburst' /etc/chrony.conf
systemctl enable --now chronyd
chronyc sources -v
バージョン互換性マトリックス
使用するKubernetesメジャーバージョンに応じて、適切なSealosリリースとCRI規格を選択する必要があります。下表はContainerd実装時の推奨組み合わせです。
| K8sメジャーバージョン | Sealos最低バージョン | CRI API仕様 | 標準ClusterImage |
|---|---|---|---|
| < 1.25 | v4.0.0+ | v1alpha2 | labring/kubernetes:v1.24.0 |
| ≥ 1.25 | v4.1.0+ | v1alpha2 | labring/kubernetes:v1.25.0 |
| ≥ 1.26 | v4.1.4-rc3+ | v1 | labring/kubernetes:v1.26.0 |
| ≥ 1.27 | v4.2.0-alpha3+ | v1 | labring/kubernetes:v1.27.0 |
| ≥ 1.28 | v5.0.0+ | v1 | labring/kubernetes:v1.28.0 |
DockerをCNIランタイムとして利用する場合は、イメージプレフィックスにdockerを追加したレポジトリを利用します。CRIインタフェースの仕様変更により、v1.26以降はv1契約が必須となる点に注意してください。
ツールの導入とクラスター展開
RPMパッケージ形式で提供されているため、依存関係のない環境でも即座に組み込み可能です。
yum install lrzsz -y
rz -E
rpm -ivh sealos-5.0.0_linux_amd64.rpm --nodeps
本番環境へのデプロイは、指定されたイメージチェーンを順番に起動させる1つのコマンドで完結します。構文を可読性良く変数展開形式に再構成しました。
MGR_NODE="10.10.20.11"
WORKER_NODES="10.10.20.12,10.10.20.13"
DEPLOY_PASS="secure_ssh_pwd"
IMG_K8S="registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.28.9"
IMG_HELM="registry.cn-shanghai.aliyuncs.com/labring/helm:v3.9.4"
IMG_CNI="registry.cn-shanghai.aliyuncs.com/labring/calico:v3.24.1"
sealos run \
${IMG_K8S} \
${IMG_HELM} \
${IMG_CNI} \
--masters ${MGR_NODE} \
--nodes ${WORKER_NODES} \
-p ${DEPLOY_PASS}
上記スクリプトを実行すると、OSレベルのパッケージ調整からetcd初期化、CNIプラグイン注入までのフルパイプラインが自動実行されます。純粋なLinux OSのみが存在する環境であれば、追加モジュールなしでHA基盤が完成します。
クラスターステータス確認と運用コマンド
展開完了後、kubeconfigパスを確認しノードアフィニティを監視します。
kubectl get nodes -o custom-columns='NAME:.metadata.name,STATUS:.status.conditions[?(@.type=="Ready")].status,ROLE:.metadata.labels.node-role.kubernetes.io/control-plane,VERSION:.status.nodeInfo.kubeletVersion'
既存構成に対する増減操作は内部CRDへの変更要求を送信するだけで適用可能です。
# ワーカーノード増設
sealos add --nodes 10.10.20.14,10.10.20.15
# コントロールプレーン増設(Quorum維持のため奇数構成推奨)
sealos add --masters 10.10.20.16
# 特定ノードの除去(ドラフトポッドの安全退避含む)
sealos delete --nodes 10.10.20.14
# クラスターの完全破棄(etcdデータディレクトリとCNIBinのクリーニング)
sealos reset --force