サーバー専用サーバーを維護する

専用サーバーのメンテナンス

この記事では、Zeaburに登録した専用サーバーのメンテナンス方法について説明します。

💡

Zeaburから専用サーバーを購入された場合、メンテナンス作業は当社が代行いたします。 メンテナンスが必要な項目についてはチケットを作成し、スタッフにご依頼ください。

ディスク容量の確保

ホストのディスク容量が不足している場合、K3sがホスト上にプルしたDockerイメージをクリーンアップすることができます(通常は自動的に実行されます)。

# 現在プルされているイメージを確認(実行不要)
$ sudo k3s crictl images
 
# 使用されていないイメージをすべて削除
$ sudo k3s crictl rmi --prune

K3sが各コンテナに対して記録しているログも、かなりの容量を占めることがあります。K3sのlogsディレクトリでこれらのログを清掃することができます。

OOMからの復旧(サーバーオフライン)

サーバーのメモリが不足(OOM)すると、サーバーダッシュボードのK3sステータスインジケーターが赤色に変わり、Kubernetesが正常に動作していないことを示します。この場合、サービスにアクセスできなくなります。

K3sステータスを表示するサーバー情報

復旧するには、Settings に移動して Reboot Server をクリックします。

SettingsのReboot Serverボタン

再起動後に自動的に起動するすべてのサービスを一覧表示するダイアログが表示されます。K3sが赤色(オフライン)の場合、すべてのサービスの選択を解除することをお勧めします。これにより、再起動後にサーバーが再びメモリ不足になることを防ぎます。

Reboot Serverダイアログ(サービス一覧)

Deselect All をクリックしてすべてのサービスの自動起動を防止し、Reboot をクリックします。

Reboot Serverダイアログ(すべてのサービスを選択解除)

⚠️

再起動プロセスには約3〜5分かかります。サーバーが再起動すると、K3sは緑色に戻るはずです。サーバーが正常であることを確認した後、Projects タブからサービスを一つずつ再有効化できます。

サーバーが頻繁にOOMになる場合は、より大きなサーバーへのアップグレードまたはデプロイするサービスの削減を検討してください。また、システムリソースが完全に枯渇するのを防ぐために、リソース予約(下記参照)を設定することもお勧めします。

リソース予約

リソース予約を使用すると、KubernetesおよびシステムプロセスにCPUとメモリを予約でき、高負荷時でもサーバーにアクセスできるようになります。これにより、オペレーティングシステムやKubernetes自体がOOMで終了することを防ぎます。

Settings > Advanced Settings > Resource Reservation に移動します。

リソース予約設定

予約には2つのカテゴリがあります:

  • Kubernetes Reserved:Kubernetesシステムコンポーネント(kubelet、kube-proxyなど)用に予約されたリソース
  • System Reserved:OSレベルのプロセス(SSH、systemdなど)用に予約されたリソース

新しく購入したサーバーのデフォルトは、KubernetesとシステムそれぞれにCPU 500m / メモリ 512Miが予約されています。サーバーの安定性を確保するため、これらのデフォルト値を維持することをお勧めします。以前購入したサーバーにこれらのデフォルト値がない場合は、手動で設定することをお勧めします。

値を調整した後、Save をクリックして変更を適用します。

DNSネームサーバーの変更

デフォルトでは、Zeabur専用サーバーはクラスターのDNSネームサーバーとしてCloudflare DNSを使用します(中国本土地域のマシンはAlibaba Cloud Public DNSを使用)。

クラスターが使用するDNSネームサーバーを変更する必要がある場合(例えば、TencentのDNSPod Public DNSに変更する場合)、/etc/resolv.kubelet.confを編集し、nameserverを希望するDNSネームサーバーに変更してください。

nameserver 119.29.29.29

変更後、K3sサービスを再起動することを忘れないでください。

$ sudo systemctl restart k3s

Zeabur サービスの無効化

専用サーバーをお持ちの場合、すべての Zeabur サービスを停止し、VPS を Docker Compose サービスの実行など他の用途に自由に使用できます。

⚠️

Zeabur サービスを停止すると、Zeabur ダッシュボードからプロジェクトやサービスを作成できなくなり、Zeabur 上で稼働中のサービスも停止します。ただし、ファイアウォールルールや再起動などのサーバー設定は引き続き管理できます。なお、Zeabur からサーバーを再インストールすると、Zeabur サービスが再インストールおよび再有効化されます。

Zeabur サービスを無効化する

Zeabur ダッシュボードのサイドバーにある SSH をクリックすると、ブラウザから直接サーバーに接続できます。ローカルのターミナルは不要です:

Zeabur ダッシュボードから SSH 接続

または SSH でサーバーに接続後、以下を実行します:

sudo systemctl disable --now k3s containerd

注意:これらのサービスを停止すると、サーバー上で稼働しているすべてのコンテナとサービスが停止しますのでご注意ください。

Zeabur サービスを再有効化する

Zeabur を再び起動するには、SSH で接続後、以下を実行します:

sudo systemctl enable --now k3s containerd

VS Code でリモート開発

VS Code Remote - SSH を使用して専用サーバーに接続し、慣れ親しんだ IDE 環境で直接ファイルの編集やコンテナの操作が行えます。

ステップ 1:Remote-SSH 拡張機能をインストール

VS Code を開き、拡張機能マーケットプレイスから Remote - SSH 拡張機能をインストールします。

ステップ 2:SSH キー認証を設定

ローカルマシンで SSH キーペアを生成し(まだない場合)、公開キーをサーバーに追加します:

# ローカルマシンで SSH キーペアを生成
$ ssh-keygen -t ed25519
 
# 公開キーをサーバーにコピー
$ ssh-copy-id <ユーザー>@<サーバー IP>

ssh-copy-id が使用できない場合は、手動で公開キーを追加できます:

$ cat ~/.ssh/id_ed25519.pub | ssh <ユーザー>@<サーバー IP> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

ステップ 3:VS Code で接続

VS Code のコマンドパレット(Ctrl+Shift+P / Cmd+Shift+P)を開き、Remote-SSH: Connect to Host を選択して、<ユーザー名>@<サーバー IP> を入力して接続します。

ステップ 4:サービスのファイル保存パスを特定

接続後、サーバーのルートディレクトリにいます。サービスファイルの実際の保存場所を見つけるには、まずサービスに対応する PVC(Persistent Volume Claim)を特定し、次にその PVC がバインドされている PV(Persistent Volume)とそのホストパスを取得します。

PVC 名は <volume-id>-service-<service-id> の形式で、Namespace は environment-<environment-id> です。

# すべての PVC を一覧表示して、サービスの Volume を特定
$ kubectl get pvc -A
 
# PVC がバインドされている PV 名を取得
$ kubectl get pvc <PVC> -n <Namespace> -o jsonpath='{.spec.volumeName}'
 
# 対応する PV のホストパスを取得
$ kubectl get pv <PV> -o jsonpath='{.spec.local.path}'

VS Code で ファイル → フォルダーを開く からこのパスを開くと、サービスファイルの編集を開始できます。

ステップ 5:コンテナのシェルにアクセス

サービスコンテナ内のターミナル環境を取得するには(Zeabur の Web Terminal に相当):

# 特定の Namespace の Pod を一覧表示
$ kubectl get pods -n <Namespace>
 
# Pod のシェルに入る
$ kubectl exec -it <Pod> -n <Namespace> -- /bin/sh

アンインストール

まず、Zeaburからサーバーとその上にデプロイされているサービスを削除する必要があります。

サーバーの削除

「サーバーの削除」の手順は、Zeaburがサーバー上に設定したインフラストラクチャを削除するものではありません。Zeaburのインフラストラクチャは主にK3s上に構築されているため、アンインストールの手順はK3sのアンインストール手順に従って行ってください。

$ /usr/local/bin/k3s-uninstall.sh