Infra Guide

概要

KAMONOHASHI のシステム運用について以下を説明します。

証明書更新

KAMONOHASHIの利用するKubernetesの証明書は1年で期限が切れるため、次の更新手順を1年ごとに実行する必要があります。

  • k8s master node上のrootユーザーでkubeadm certs renew all
  • 一般ユーザーでsudo cp /etc/kubernetes/admin.conf ~/.kube/config
  • k8s masterを再起動
  • kubectl get csr -o name | xargs -I {} kubectl certificate approve {}
  • 全nodeを再起動

なお、上記手順はKAMONOHASHI v4以降のKubernetesでのみ可能あり、それ未満の場合はバージョンアップが必要です。

バックアップとリストア

KAMONOHASHIのバックアップ・リストアには、

  • マシン・Linux OSのバックアップ・リストア
  • KAMONOHASHIのアプリレベルのバックアップ・リストア

の2種類の方法があります。 この内、KAMONOHASHIのアプリレベルのバックアップ・リストアについて解説します。 マシン・Linux OSのバックアップ・リストアについてはご自身の環境に合わせて、 仮想マシンのバックアップリストアやdumpコマンドの利用を検討してください

バックアップ対象と設定方法

バックアップの対象は次の2つになります

  • KAMONOHASHIのデータベース
  • KAMONOHASHIで利用しているNFSストレージ

データベース

データベースのバックアップと設定

  • KAMONOHASHIマシンの/var/lib/kamonohashi/postgresql/backupにダンプファイルが生成されます
  • kqi-backup-<日付>.sqlというファイル名になります
  • デフォルトでは毎週日曜日01:00に生成され、1世代のみ保管されます
  • 世代数と取得日付を変更可能です
バックアップ設定を変更する
  • Kubernetes Masterマシンにrootでログインします。
  • /var/lib/kamonohashi/deploy-tools//kamonohashi/conf/settings.ymlを開きます
  • BackupPostgresTimerOptions__WeeklyTimeSchedule, BackupPostgresTimerOptions__MaxNumberOfBackupFilesのコメントアウトを外し、編集します
プロパティ名 解説      設定例
BackupPostgresTimerOptions__WeeklyTimeSchedule 取得日を指定します。曜日=時刻のフォーマットで記載します。曜日は英語表記の先頭3文字で指定します。
;区切りで複数日時を指定可能です
“Sun=01:00:00;Mon=01:00:00”
BackupPostgresTimerOptions__MaxNumberOfBackupFiles 保管する世代数です。指定した世代数を超える古いファイルは削除されます
“2”
  • 修正例は次になります。インデントをDeployOptionsとそろえてください

  • before

appsettings:
  DeployOptions__GpuNodes: ...
  ...
#   BackupPostgresTimerOptions__WeeklyTimeSchedule: "Sun=01:00:00"
#   BackupPostgresTimerOptions__MaxNumberOfBackupFiles: "1"
  • after
appsettings:
  DeployOptions__GpuNodes: ...
  ...
  BackupPostgresTimerOptions__WeeklyTimeSchedule: "Sun=01:00:00;Mon=01:00:00"
  BackupPostgresTimerOptions__MaxNumberOfBackupFiles: "2"

データベースの復元

Kubernetes Masterマシンでの作業
  • Kubernetes Masterマシンにrootでログインします。
  • 次を実行し、KAMONOHASHI を停止します /var/lib/kamonohashi/deploy-tools/deploy-kamonohashi.sh clean app
KAMONOHASHIマシンでの作業
  • KAMONOHASHIマシンにrootでログインします
  • /var/lib/kamonohashi/postgresql/backup/に復元したいデータベースのダンプファイル(kqi-backup-<日付>.sql)を配置してください
  • 次のコマンドを実行し、ダンプファイル名を変数に設定します
DUMP_FILE=kqi-backup-<日付>.sql
  • 既存のデータベースのデータを別の場所に退避します
mv /var/lib/kamonohashi/postgresql/data /var/tmp/
  • リストアコマンドを実行します
docker run -d --name restore-postgres -e POSTGRES_HOST_AUTH_METHOD=trust -v /var/lib/kamonohashi/postgresql/data/:/var/lib/postgresql/data postgres:10
docker cp /var/lib/kamonohashi/postgresql/backup/$DUMP_FILE restore-postgres:/$DUMP_FILE
docker exec -it restore-postgres psql -U postgres -f /$DUMP_FILE
  • 完了後に次のコマンドを実施します
docker stop restore-postgres
docker rm restore-postgres
Kubernetes Masterマシンでの作業
  • Kubernetes Masterマシンにrootでログインします。
  • 次を実行し、KAMONOHASHI を起動します /var/lib/kamonohashi/deploy-tools/deploy-kamonohashi.sh deploy app

NFSストレージ

  • NFSの中身をrsyncやバックアップ製品で保護してください
  • ベーシッククラスタではstorageの/var/lib/kamonohashi/nfsを保護します
  • 保護した方法に合わせてリストアしてください

認証情報の更新

  • v4.x 以降のデプロイツールに認証情報更新用のコマンドを用意しています。
  • このコマンドで、更新可能な認証情報は以下になります。
    • DB のパスワード
    • MinIO ストレージのパスワード
      • ※自動構築されたオブジェクトストレージを利用している場合のみ更新されます。
  • KAMONOHASHI の admin ユーザのパスワードについては、KAMONOHASHI のユーザ管理画面から変更をしてください。

DB のパスワード更新

  • root ユーザで次の DB の認証情報更新用コマンドを実行します。
cd /var/lib/kamonohashi/deploy-tools
./deploy-kamonohashi.sh credentials db
  • 「DB Passwordを入力」と表示されるため、新たに設定するパスワードを入力してください。

MinIO ストレージのパスワード更新

  • root ユーザで次の MinIO ストレージの認証情報更新用コマンドを実行します。
cd /var/lib/kamonohashi/deploy-tools
./deploy-kamonohashi.sh credentials storage
  • 「新しいStorage Secret Keyを入力」と表示されるため、新たに設定するパスワードを入力してください。
  • 新たに設定したパスワードを、KAMONOHASHI のストレージ管理画面から該当ストレージの「シークレットキー」を更新してください。

KAMONOHASHI の各パスワード更新

  • DB と MinIO ストレージのパスワードの両方を更新するため、次の更新用コマンドを実行します。
cd /var/lib/kamonohashi/deploy-tools
./deploy-kamonohashi.sh credentials all
  • 「DB Passwordを入力」と表示されるため、新たに設定するパスワードを入力してください。
  • 「新しいStorage Secret Keyを入力」と表示されるため、新たに設定するパスワードを入力してください。
  • 新たに設定したパスワードを、KAMONOHASHI のストレージ管理画面から該当ストレージの「シークレットキー」を更新してください。

アプリの設定

リソース管理画面でkubernetesの管理系のコンテナなどを非表示にしたい場合

システム設定メニューのリソース管理画面で、ユーザー等の情報がUnknown等になっているコンテナが表示される場合があります。 kubernetesで使用している管理系のコンテナ等が表示されてしまっている場合、このような現象が発生します。 これらのコンテナを表示しないようにしたい場合は、以下の手順で設定を行ってください。

  • /var/lib/kamonohashi/deploy-tools/kamonohashi/conf/settings.yml を開き、appsettingsの ContainerManageOptions__IgnoreNamespacesに非表示にしたいコンテナが所属しているネームスペースを指定してください。
    • 複数設定したい場合は、下のようにカンマ区切りで設定してください。
      appsettings:
          --- 省略 ---
          ContainerManageOptions__IgnoreNamespaces: "gpu-operator,node-feature-discovery"
      
  • ./deploy-kamonohashi clean app && ./deploy-kamonohashi deploy app を実行し、KAMONOHASHIのアプリを再起動してください。
    • この再起動ではKAMONOHASHIのアプリとデータベースのコンテナだけが再起動され、クラスタの情報は更新されません。