ICTSC2025 本戦 問題解説: [3106] くばねてすでティータイム
問題文
概要
あなたは、Giteaを使ってGitサーバーを構築することにしました。
せっかくなのでKubernetesを使うことにしたあなたは、K3sをインストールしました。
あなたはデータを保存するため、K3sとは別ノードにNFSサーバーを構築し、
K3sクラスタにはnfs-subdir-external-provisionerをデプロイしました。
最後にGiteaをデプロイしましたが、思ったように動いていないようです。
制約
- Giteaのデータ永続化には、必ず192.168.6.3のNFSサーバーとnfs-subdir-external-provisionerを利用すること。例として以下のようなものは禁止だが、これらに限らない。
PersistentVolume手動作成- hostPath、emptyDirや、NFS以外のプロビジョナー(local-path等)の利用
初期状態
- GiteaのPodがRunning状態ではなく、アクセスできない
終了状態
- GiteaのPodがRunning状態であり、アクセスできる
- 初期セットアップ画面にて、画面下部のInstall Giteaボタンを押し、正常にセットアップが完了している
- ノードを再起動してもGiteaのデータが失われず、再起動後に接続すると初期セットアップ画面ではなくGiteaのホーム画面が表示される
解説
この問題では、以下のようなトラブルが発生していました。
- k8s ノードにnfs-commonが入っていない
sudo apt install nfs-common
- gitea-data PVCをtypoしている
gitea-dateからgitea-dataに修正する
- gitea-data PVCのstorageClassNameを間違えている
nfs-subdirからnfs-clientに修正する
- NFSサーバーの
/etc/exportsの/exports/k8sにno_root_squashが書かれていないが、exportされたディレクトリがroot:rootで755になっており、permission deniedになる- 以下のような解決方法がある
no_root_squashの追加/exports/k8sのownerをnobody:nogroupに変更/exports/k8sのpermissionを777に変更
- 以下のような解決方法がある
採点基準
- 終了条件を満たしている(60%)
- 報告書に書かれた手順で、問題を解決できる(40%)
講評
出るエラーを順番に解決すればいいので、解きやすい問題だったのではないでしょうか。
NFS Exportの部分に制約をつけるともう少し面白かったかな、と思います。