サイボウズでは、オンプレミス機材の一部を活用してFolding@homeによるCOVID-19のタンパク質構造予測に貢献することにしました。
ご自身で動かしてみたいというかた向けに、我々が使っているKubernetesマニフェストも記載しているのでぜひご覧ください。
Folding@homeとは
みなさんはFolding@homeを知っていますか?
Folding@homeとは、タンパク質構造予測に必要な計算処理を、世界中の有志による分散コンピューティングで推進するプロジェクトです。 10年以上昔の話になりますが、PlayStation 3を活用したプロジェクトを覚えている方も多いかと思います。
最近Folding@homeのブログにて、COVID-19の治療薬開発に使われるタンパク質構造予測を行っているという旨の記事が公開されました。
これを受け複数の企業がFolding@homeへの貢献、あるいは貢献の呼びかけを表明しています。
Starting later today, GitHub is donating up to 60,000 core-hours per day of idle GitHub Actions compute capacity to Folding@Home's efforts to find drug treatments for 2019-nCOV. https://t.co/G5QIlFc8zz
— Nat Friedman (@natfriedman) 2020年3月10日
PC Gamers, let’s put those GPUs to work.
— NVIDIA GeForce (@NVIDIAGeForce) 2020年3月13日
Join us and our friends at @OfficialPCMR in supporting folding@home and donating unused GPU computing power to fight against COVID-19!
Learn more → https://t.co/EQE4u7xTZT pic.twitter.com/uO0ZCq8PEv
サイボウズもFolding@homeに参加中です
サイボウズもオンプレミス機材の一部を利用し、Folding@homeに参加しています。
2020年3月16日現在、24CPUコアのサーバ105台でFolding@homeのクライアントを実行しています。
デプロイ方法
今回の用途に使える機材はKubernetesノードであったため、Folding@homeのクライアントはPodとして実行することにしました。
KubernetesマニフェストやDockerイメージは https://github.com/richstokes/k8s-fah を参考にし、 それを元にいくつかの変更を加えています。
- クラスタサイズに合わせてPod数を変えたいため、
Deployment
ではなくDaemonSet
を使用する。- ただし、他のPodがスケジュールされるとPreemptされるように
PriorityClass
とresources.requests
を調整する。
- ただし、他のPodがスケジュールされるとPreemptされるように
PodSecurityPolicy
によってread-onlyなrootファイルシステムの使用を強制しているので、Folding@homeのクライアントが書き込むパスにemptyDir
をマウントする。PodSecurityoPolicy
によってrootユーザによる実行を禁止しているので、実行ユーザを変更する。- 万が一クラスタ内で不要な通信が行われるリスクに備えて、Calicoの
NetworkPolicy
でFolding@homeのPodがアクセス可能な範囲を制限する。 resources.limits
に指定したコアはすべて使って構わないので、--power=full
オプションを指定する。- 2020/04/01追加: 1クライアントあたりのCPUコア数が多すぎると "No WUs available for this configuration" というログメッセージとともにアイドリング状態に入ってしまうので1クライアントあたりのCPUコア数を減らす。具体的にはDaemonSetの数を6個にして、それぞれのPodに割り当てるCPUコア数を搭載数の1/6にする。
具体的なマニフェストは以下に記載しています。
まとめ
サイボウズのFolding@homeへの貢献と、Folding@homeクライアント実行方法について説明しました。
Kubernetesノードがあればすぐに参加することができるので、もし余ったノードがある方はぜひ参加してみてください。
COVID-19にまつわる状況が一刻も早く改善することを願っています。