この記事は Kubernetes Advent Calendar 2020 の 23 日目の記事です。
今年に入ってから(正確には去年の秋頃から)個人的にKubernetesに関する取り組みみたいのを結構増やしていたり、その関連でブログやセッションをしたりといった活動も増えたので、2020年にKubernetes関連で取り組んだことについてまとめようと思います。
Kubernetesやその関連の実装に関する調査
業務でKubernetesに関するコンポーネントを書いていることもあり、Kubernetesの様々な実装について把握したくなったので、今年はそこらへんの調査に結構時間を使ってました。
Kubernetesのコードリーディング情報まとめ
Kubernetesのコードリーディングの方法というか、読む上でここらへんを抑えておくとスムーズに読めると個人的に思うことをこの記事でまとめました。
ブログやセッションの中で今の所この記事が一番バズったみたいなので、 Kubernetesの内部実装にはみんな興味あるのかなと思いました。
ちなみにこの記事について需要ありそうだったこともあって、秋頃から始めた「Kubernetes Internal」という勉強会の第一回目で記事で書いてたことについての解説をさせていただきました。
Container Storage Interface(CSI)
Container Storage Interface(CSI)については去年から調べてたものではあるけれど10月のKubernetes Meetup Noviceで改めてCSIについてセッションをする機会をいただいたきました。
Cloud Controller Manager(CCM)
Cloud Controller Manager(CCM)については今年はじめ辺りから
あたりで部分的にまとめてたけど、9月のCloud Native Days 2020でまとまった内容を発表することができました。
個人的にはこれくらいまとまってれば十分かなという感じでまとめられた気がしてるので良かったかなという感じです。
概要としては上記で十分だとは思うのですが、コードベースでの解説も「Kubernetes Internal」の第2回目で行いました。
Prow
Kubernetesそのものでは無いのですが、Kubernetesコミュニティが作成・使用しているProwというCIツールについても調べる機会があったので、調べた内容をセッションなどで発表を行いました。
ProwはKubernetesのCRDを使ってアプリケーションを構築しているので、KubernetesのOperator実装の1例として勉強になるのではないかという気がしています。
また、KubernetesやCloud Native関連プロダクトにコントリビュートする際にこのProwが利用されているケースが多いので、Prowの動作について知りたい人にも見て頂けたらと思っています。
kubeadm
kubeadmについても調べる機会があったので、調べた内容についてセッションで発表しました。
ちょうど発表した翌日にKubernetes Meetup Tokyoでherietさんがkubeadmについて発表されていて、実はこのセッションの少し前にkubeadmの本を出版されてたことを知ったのを覚えてます。
その他の発表など
Kubernetesのログデータ加工
KubernetesがコンテナのログデータにどうやってPodなどについてのメタデータを付与しているのかが気になったので調べました。
fluentdのプラグインの中で別スレッドのAPI Server監視を動かしていて、結構むちゃしてデータを取ってくるなぁという印象だった記憶があります。
Kubernetes入門者向けのセッション
Kubernetesをこれから始める方向けに、僕がKubernetesを触り始めたときの事例みたいなものを紹介させていただきました。
また、CNBFという運営に関わらせて頂いている勉強会でも入門者向けのセッションを行いました。
その他の活動
Kubernetes公式ドキュメント翻訳
Kubernetes公式ドキュメント翻訳や、そのレビューをしていたので日本語翻訳プロジェクトのレビュワーにしていただきました。
今年の後半は忙しかったこともあり、取り組みが減っていたので、来年は改めて頑張りたい感じです。
勉強会の主催
記事の始めの方にも少し出た「Kubernetes Internal」というKubernetesやCloud Native関連プロダクトをコードベース中心に共有する勉強会というのを10月から開始して、これまでに3回開催しました。
(月に1回勉強会をやってる感じです)
これはYouTubeに過去のセッションがありますので興味ある方がいれば見ていただければと思います。
今月実施した第3回目はチェシャ猫さんにScheduling Frameworkについてお話しいただきました。
情報発信
また、勉強会とは別にKubernetseやCloud Nativeに関する情報で今週自分たちが気になったことについて雑談をする配信を、Kubernetes Meetup Noviceの運営メンバーのryさん、chagoさんのお2人と始めました。
こちらは始めたのが1ヶ月ほど前のことですが、毎週金曜日10時ごろから1時間ほど行っているのでもう4回配信を行いました。
YouTubeチャンネルは「Kubernetse Internal」のチャンネルでそのまま配信しているので、こちらも興味ある方いれば上記のリンクより動画や配信を見ていただければ嬉しいです。
技術同人誌
最後に技術同人誌です。
ちょうど今週26日からオープンする「技術書典10」というイベントでKubernetesのコンポーネントの1つであるKubeletについての本を出す予定です。
技術同人誌を書くのが初めてだったのもあり
- 表紙をイラストレーターさんに依頼したり
- Re:Viewの使い方を覚えたり
でわからないことが多く、かなり苦労しましたがなんとか仕上げることができたので、良ければ買っていただけるとありがたいです。
正直調べるのにそんなに時間かからないだろうと思ってたのですが、他のどのKubernetesコンポーネントよりも実装が複雑かつ巨大で、数十以上のgoroutineとチャネルによって動作するイベント駆動型の実装になっていたためめちゃくちゃ調べるのに時間がかかりました。
そのためちゃんとまとめきれてるか不安はあるのですが、電子版のみを出すこともあり、出した後にアップデートして行ければ良いかなと思っています。
まとめ
今年のKubernetes活動をまとめたら思ったよりも長文になってしまいました。
思い返すとだいたい1月に1–2回以上はブログを書くなりセッションをするなどをしていた気がします。
これまでほとんどブログを書いたりセッションで発表をしてこなかったので、1年でだいぶ変わったなという気がしてます。
(自分で勉強会や配信も行うようになりましたし)
Kubernetesについてはコアの部分は結構把握できてきたなーという感じがあるので来年はKubernetes本体だけではなくコンテナランタイムやCNI、その他Cloud Nativeアプリケーションなどについても手を出して行ければ良いなと思います。