こんにちは。 @sanposhiho です
6 月から参加していた、Google Summer of Code (以下 GSoC) を無事修了しました。
この記事では、開発していた kubernetes-sigs/kube-scheduler-simulator の紹介と、GSoC 終わってみてどうだったかって話をしようと思います
↓ は採択された時の記事で Proposal の話などはこちらの記事でしています。
Google Summer of Code 2021 で Kubernetes に出していた Proposal が採択された
僕は CNCF の Kubernetes のプロジェクトで採択され、開発に携わっていました。
I've passed Google Summer of Code 2021 on Kubernetes!!!
— さんぽし/sanposhiho (@sanpo_shiho) September 1, 2021
Thanks for the wonderful experience!! @CloudNativeFdn , @kubernetesio and wonderful mentor adtac! pic.twitter.com/WQgOOMGikV
kubernetesのmemberになりました pic.twitter.com/uLfZ7vbbew
— さんぽし/sanposhiho (@sanpo_shiho) August 24, 2021
A web-based simulator for the Kubernetes scheduler
GSoC では Kubernetes の scheduler の動作を Web 上から確認できる kube-scheduler-simulator を開発しました。kubernetes-sigs の Org 元で公開されています。
https://github.com/kubernetes-sigs/kube-scheduler-simulator
Kubernetes Scheduler はコントロールプレーン内のコンポーネントのうちの一つで Pod をどの Node に割り当てるかを決定します。
Kubernetes Scheduler | Kubernetes
Kubernetes scheduler は内部に Scheduling Framework と呼ばれるアーキテクチャを持っています。
Scheduling Framework | Kubernetes
このアーキテクチャではいくつかの拡張点が定義されており、機能ごとにプラグインという形で実装されています。 拡張点の内、 主に Filter と Score にて、 Pod をどこで実行するのが最も適しているかの選択が行われます。
Filter フェーズでは候補となっている Node のうち、Pod を実行することができない Node を除外します。 そして、Score フェーズでは残った候補の Node にプラグインごとに点数をつけていき、最終的に最も点数が高かった Node に Pod は割り当てられることになります。
実際の Kubernetes 上ではどのような比較が行われどのような経緯で Node が選ばれたかなどの情報はログをみないと確認することができず、ログの確認には強い権限が必要になることが多いです。また、当たり前ですが、ログをはいている箇所の情報しか見ることはできず、ログレベルも調整しておく必要があります。
そこで、「どのプラグインが」「どの Node に対して」「どのような判断を行ったのか」を確認しながら scheduler の動作を Web 上から試すことができる kube-scheduler-simulator を開発しました。
WebUI でぽちぽち Node などのリソースを作成し、Pod を作成することで以下の様に各プラグインの結果を確認できます。また、KubeSchedulerConfiguration を通して Scheduler の挙動自体も変更することができます
Kubernetes scheduler 自体の学習や、プラグインの詳細な動作の検証などの目的に使用することができます。
細かな使用方法などはREADMEを確認してみてください。(9/1 現在、幾つか細かいバグがあるのでその辺は issue なり PR をご確認ください…)
大変だったこと
GSoC の本質ではないですが英語です。受験英語の延長で英語の writing/reading はギリなんとかなってる(と勝手に思っている)のですが、listening/speaking は何がなんやらさっぱり苦手です。
週に一度メンターさんと進捗確認の 1 on 1 をしてもらっていました。
メンターさんとの 1 on 1 は Google meet だったので、Google meet の字幕に手伝ってもらってなんとか聞き取っていました。ありがとう Google。 メンターさんも下手くそ英語を頑張って聞き取ってくれたというのもあると思います。
参加してよかったこと
OSS に興味がある学生というのは日本でもそこそこいると思いますが、やはり、言語面や技術面などさまざまな面でハードルを感じる部分もあると思います。
個人的には OSS で最もハードルを感じるポイントとして、質問のしづらさみたいなところが大きくあり、「メンテナに質問して手間をかけるのも申し訳ないし、何か詰まっても独力で解決しなければならない。」みたいに感じています。
GSoC では実際にメンターとして普段そのプロジェクトの開発を行なっているエンジニアにサポートしてもらい、質問や詰まった時の相談を気軽にすることができます。普段だと挑戦しずらいような大きな issue やプロジェクトにその環境下で挑戦することができると言うのも魅力だと思います。
また、お賃金までもらうことができるので他のアルバイトなどに大きな時間を取る必要がなく、GSoC に集中することができるのも良い点だと感じました。
終わりに
Google Summer of Code、素晴らしいプログラムでした。このプログラムに参加できるというのは学生の特権と言えると思います。 興味のある方は言語面などは僕は何とかなったので気にせずチャレンジしてみてください。きっとあなたの興味のあるあのプロジェクトも GSoC に参加していると思います。