Slide 1

Slide 1 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       1 CRD で遊んでみる VA Linux Systems Japan ( 株 ) 岩本俊弘

Slide 2

Slide 2 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       2 ● 背景 ● CRD ● Controller ● Operator-sdk を使った CRD controller の作りかた ● デモ ( 試作例 ) ● まとめ 発表内容

Slide 3

Slide 3 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       3 VA Linux のこれまでの取り組み VA Linux は、 Linux カーネルの開発に始まり、仮想化技術、 IaaS 基盤関連、ネットワーク、ストレージ、コンテナ技術 へとサービスの幅を広げてきました。 IaaS / Cloud / 車載向け OS Container/ AI Linux Kernel Hypervisor SDN / NFV / Storage 2000 ~ 2005 ~ 2010 ~ 2017 ~

Slide 4

Slide 4 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       4 コンテナ関連のサービス パフォーマンス測定などの設計支援 技術調査、ソースコード解析調査 機能開発、強化、チューニング 運用ツールの開発 障害解析 性能解析、ボトルネック分析 実機検証、性能評価支援 導入支援 受託開発 サポート コミュニティへの機能提案 バグレポート、修正 コミュニティ活動支援 コミュニティ 対応 VA Linux は KCSP に 認定されています。

Slide 5

Slide 5 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       5 技術ブログもやっています https://valinux.hatenablog.com/ ぜひ見に来てください!

Slide 6

Slide 6 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       6 背景 ● K8s の標準リソースをサポートしない API server がある – https://github.com/thetirefire/badidea – https://github.com/kcp-dev/kcp – 注 :↑ これらは今回は使いません ● Pod 等のリソースを使わずに何が作れるか ? ● k8s の API は本当にすばらしいのか ?

Slide 7

Slide 7 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       7 CRD について ● kind: CustomResourceDefinition ● 各種オペレータでおなじみ ● 定義した API resource が使えるようになる ● OpenAPI で schema を書く

Slide 8

Slide 8 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       8 Operator kube-apiserver foobar-operator Reconcile () { … } watch Get, list, create, update, ...

Slide 9

Slide 9 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       9 Operator-sdk, kubebuilder ● API 定義と Reconcile() を書けば後はやっ てくれるような仕掛け ● yaml も自動生成 ● kubebuilder のドキュメントがやたら充実 している

Slide 10

Slide 10 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       10 デモ

Slide 11

Slide 11 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       11 デモ : 解説 ● Cart ● PriceList ● 複数リソース間の連携がいまいち – たぶん想定された使いかたではない ● Transaction の扱いがうまくない – .spec.checkout に代入 ● 電卓でできる計算なのでいまいち ● 在庫を確保とか出荷とかあまり上手く 書ける気がしない

Slide 12

Slide 12 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       12 K8s API は spec にあわせて調整するとい うものであった ↓ 最適化問題ならどうか

Slide 13

Slide 13 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       13 グラフ理論 ● G=(V, E) ● V: 頂点、 E: 辺 ● 有向グラフと無向グラフがある ● 辺には重み (weight) がある ● 辺ごとに k8s リソースを定義 ● graphviz で絵がかける

Slide 14

Slide 14 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       14 最大フロー問題 ● 有向グラフ上のフローを最大化 ● Ford–Fulkerson アルゴリズム ● インクリメンタルに解ける ● 最小カットも同時に解ける

Slide 15

Slide 15 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       15 最大カット問題 ● 頂点を 2 つの集合に分ける ● NP-hard ● 0.878 近似アルゴリズムあり (Goemans and Williamson, 1995) ● 今日は 0.5 近似

Slide 16

Slide 16 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       16 デモ (2)

Slide 17

Slide 17 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       17 まとめ ● CRD と Operator(Controller) を試した ● kubernetes の用意している仕掛けが活用で きる ● プロトタイプ作成には向いてそう ● K8s API は declarative なので適用対象は選 ぶ ● 最適化問題 ( リソース最適化 ) と何かの制御を組みあわせる のはありかも

Slide 18

Slide 18 text

Copyright VA Linux Systems Japan. All rights reserved. ⓒ       18 参考資料 ● https://sdk.operatorframework.io/docs/ ● https://book.kubebuilder.io/ ● Max Flow, Min Cut, Kevin Wayne, 2004, https://www.cs.princeton.edu/courses/archive/spr04/cos226/lectures/maxflow .4up.pdf ● Improved approximation algorithms for maximum cut and satisfiability problems using semidefinite programming, Michel X. Goemans, David P. Williamson, 1995, https://doi.org/10.1145/227683.227684 ● Kubernetes カ ス タ ム コ ン ト ロ ー ラ の 開 発 例 , 森 克 彦 ,2020, https://valinux.hatenablog.com/entry/20201008 ● https://github.com/toshiiw/cndt-cart-op ● https://github.com/toshiiw/cndt-graph-op