CloudNative Days Tokyo 2019 感想 #CNDT2019

CloudNative Days Tokyo 2019 というクラウドネイティブコンピューティング系の技術と OpenStack系の技術のカンファレンスに行きました。

印象に残ったセッションをいくつか書きます。

Kubernetesを拡張して日々のオペレーションを自動化する

カスタムコントローラの作り方の話。

最近カスタムコントローラを作ることが増えてきたので。

入門っぽいところから始まって、具体的な開発上の知見まで教えてくれるセッション。 あとスライドがすごいおしゃれだった。

個人的メモ

  • Conditions フィールドは配列で作ったほうがいい
  • CRD のフィールドは主に以下の二種類がある:
    • ズレ検出のためのフィールド
    • ズレを修正するためのアクションのオプション。こちらのフィールドは struct にまとめておくと後から変更しやすい
  • OwnerReference は親しか引けないので、孫引きをするなら孫引き用のフィールドを用意しとくと計算時間の削減になる
  • 公式リソースに対する Finalizer は validation がかかっている。{{ APIGroup }}/{{ Name }} という形式にする必要がある
  • キャッシュは manager 単位なので、同じリソースをみる controller は同じ manager にまとめると効率的
  • 後方互換性をサポートするためにこれからは Conversion Webhook が使える

Kubernetes拡張を利用した自作Autoscalerで実現するストレスフリーな運用の世界

カスタムコントローラで Bigtable の autoscaler を作った事例。

カスタムコントローラって運用者を置き換える仕組みとして紹介されることが多いけど、 異常検知とか時系列データをもとになにかアクションを起こすような仕組みとの相性がめちゃ良さそうだなとか思った。

そういえば数理的な手法で解を見つけるような仕組みの含まれたカスタムコントローラってまだ無いイメージがある。 Poseidon っていうスケジューラが数理最適化を使うらしい。

Cloud Native Storageが拓くDatabase on Kubernetesの世界

k8s以前からあるDBクラスタリング基礎知識の講義から始まり、 いまあるクラウドネイティブなストレージソフトウェアがどのようなパターンを採用しているのかということを説明してくれるセッション。 個人的には一日目の中で一番勉強になった。

ちなみに発表内で紹介されていた kube-fencing の実装が bash だった。k8s 関連の OSS たまに bash で書いてあるからびびる。 github.com

実録!CloudNativeを目指した230日

OpenStackベースのプライベートクラウドを使っている会社でk8sを導入していっている話。 ingress-nginx のラウンドロビンがリセットされて一瞬同じPodに負荷が集中するバグの話などがされていた。 オブザーバビリティは重要。

ZOZOTOWNのCloud Native Journey 〜トール・マカベッチのアンサーソング付き〜

ZOZOTOWNアーキテクチャ刷新の話。 まずはAPI Gatewayを立てましょうなど具体的なアプローチにも触れられていた。 クラウドネイティブ環境への移行は自分の働いている会社でも非常にホットな話題なので観に行った。

この資料が良いらしい。 docs.microsoft.com

あとこの本がいいらしい。 shop.oreilly.com

How cgroup-v2 and PSI impacts CloudNative?

croupの入門的な解説から始まり、cgroup v2 での変更と PSI(Pressure Stall Information) というカーネル機能の解説。 どういう controller が cgroup にあるのかなども教えてくれる内容になっていて、このあたり不勉強の自分にはとても勉強になった。 cgroup v2 と PSI を使うとコンテナごとの負荷状況が取りやすくなるとのこと。

ちなみに node_exporter にも PSI を使う collector が生えてた。 github.com

全体的な感想

カスタムコントローラの話とクラウドネイティブに移行する話が多かった印象。 来年のCNDTではオブザーバビリティやEnvoyを使った事例の話が増えていたりするんだろうか? せっかく自分もk8s中心の基盤チームで働いているんだし、今後なにか発表してみたい。

k8sk8s の外側(IaaSのマネージドサービスやOpenStack)を繋ぐ部分をカスタムコントローラで作るのは普遍的なアイデアっぽい。 個人的にはカスタムコントローラってどんどん作ってみたいけど、カスタムコントローラで作ることがきちんと意味をなす題材ってあんまり落ちてないな~とかよくおもっていた。なんかいいアイデア思いつきたい。

心残り

このセッション実際に観たかった~