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の求人を載せました。

index.htmlのファイル

 レンダリングされる求人ページ(展開できます) ICTSC2023 求人

運営スタッフ大募集!!!

ICTSCはあなたの参加を待っています!

※ICTSC2023が必ず開催されるわけではございません。
運営不足やその他の原因によって開催しない可能性がございます。
また、運営方法や待遇などが変更される可能性がございます。

運営のやること

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%)

参加者の声

  • 魔王様が作成されたこのような素晴らしい求人ページが正しく配信されるようになったことを喜ばしく思います。これで希望者が続出するに違いありません(なにしろ魔王の元で働けるのですから)。