AVU 魔王様の求人
問題名
魔王様の求人
問題文
概要
退職者が続出し、人員不足に悩まされる魔王様は求人サイトを立ち上げることにしました。
なにしろ魔王の元で働けるのですから、希望者が続出するに違いありません。
くーばねてぃす? というものを使うとWebサイトが落ちないと聞いた魔王様がサンプルをもとに構築したそうです。
魔王様がKubernetesクラスタで遊んでいたところ、なぜかNginxが動かなくなってしまいました。
クラスタの修復を行いたいのはやまやまですが、魔王様はそろそろ戦の準備をしなければなりません。
そこで、Nginxが動かなくなった原因を部下のあなたに究明するように命令しました。
ただし、Kubernetesクラスタを再作成したり、デプロイしているリソースを変更してはいけません。
魔王様が設定してくださったありがたい構成を変更してはいけないのです。
Nginx が動かなくなってから作成された求人ページがあるので、Nginx が動くようになったなら以下のコマンドを参考にindex.html
を差し替えてください。
kubectl cp /home/user/prob/index.html $(kubectl get pod -l "app=nginx" -o jsonpath='{.items[0].metadata.name}'):/usr/share/nginx/html/index.html
あなたが原因を突き止めて、修復方法を見つけ出してください。
前提条件
- Kubernetesクラスタを再作成しない
- デプロイしているリソースを変更しない。
初期状態
- Nginxやその他のリソースが動作していない。
終了状態
- Nginxなどが動作するようになり、NginxのSVCにアクセスしてwebサイトが確認できるようになる
問題環境
OSはすべてUbuntu22.04。
Kubernetesのmaster x1、node x3の環境でした。 rookが動かせるならmaster x1、node x1などどんなクラスタでもいいと思います。
構築に使用したものはGitHubのリポジトリに置きました。
全マシンでKubernetesのインストールを行う。
masterでKubernetesの構築
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
rm -rf $HOME/.kube/config
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
masterでkubeadm init
したときに表示されるjoinコマンドを各nodeで実行
kubeadm join kube-master.cf.nownabe.in:6443 --token XXXX \
--discovery-token-ca-cert-hash sha256:XXXX
masterでrookの用意
git clone --single-branch https://github.com/rook/rook.git --branch v1.7.10
cd rook/cluster/examples/kubernetes/ceph/
cluster.yamlを以下のように変更
storage: # cluster level storage configuration and selection
useAllNodes: true
useAllDevices: true
config:
nodes:
+ - name: "192.168.18.11"##nodeのIPなど
+ devices: # specific devices to use for storage can be specified for each node
+ - name: "vdb" #ディスクの名前
rookをデプロイ
# cluster.yamlを編集せずディスクを自動探索する場合
# sed -i -e 's/ROOK_ENABLE_DISCOVERY_DAEMON: "false"/ROOK_ENABLE_DISCOVERY_DAEMON: "true"/g' operator.yaml
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
kubectl create -f cluster.yaml #もしくは cluster-test.yaml
kubectl create -f toolbox.yaml
kubectl create -f filesystem.yaml
kubectl create -f csi/cephfs/storageclass.yaml
nginx等のデプロイ
kubectl apply -f https://raw.githubusercontent.com/siberiy4/ictsc-2022-problem/main/avu/nginx.yaml
最後に適当に求人情報を載せたindex.htmlを作成しましょう。
今回は、ICTSC2023の求人を載せました。
レンダリングされる求人ページ(展開できます)
運営スタッフ大募集!!!
ICTSCはあなたの参加を待っています!
※ICTSC2023が必ず開催されるわけではございません。 運営不足やその他の原因によって開催しない可能性がございます。 また、運営方法や待遇などが変更される可能性がございます。
運営のやること
- 全員やること
- 問題アイデアをだす
- 問題作成
- ほかの人の問題レビュー
- 希望者ができること
- 問題インフラの作成 参考: ICTSC2020 インフラ(2022は物理機材はありませんでした)
- 問題掲示をおこなうスコアサーバーの開発: スコアサーバー バックエンド、 スコアサーバー フロントエンド
- 監視基盤やスコアサーバーをのせるk8s基盤の開発 参考: ICTSC2020 k8s運用 前編、 ICTSC2020 k8s運用 後編
2022での待遇
- 給与等なし
- 開催場所への交通費提供
- 開催場所での宿泊場所提供
参考: ICTSC2022開催までの流れ
11月ごろキックオフ ↓ 年末までに問題アイデア ↓ 二月末まで 問題作成 ↓ 二月末~三月初め ホットステージ (開催場所に集まって問題作成やインフラ構築)応募などは閉会式で
解説
概要
nodeが再起動したことによってLVが不活性化されているため、 osdがinitに失敗している。
そのため、lvm2をインストールする。
lvm2がインストールされていない古い環境で起こった。
さくらのクラウドのUbuntu22.04ではインストールされていました。
解答手順
各nodeで
sudo apt install lvm2
を実行した後に nodeのrebootもしくは、sudo vgchange -a y
を実行する。
採点基準
- lvm2をインストールして、OSDが起動してNginxのSVCにアクセスして求人情報が確認できるようになる。(100%)
参加者の声
- 魔王様が作成されたこのような素晴らしい求人ページが正しく配信されるようになったことを喜ばしく思います。これで希望者が続出するに違いありません(なにしろ魔王の元で働けるのですから)。