KubeFest 东京2020参与总结
概述
参加了2020年KubeFest东京活动后,非常感谢这个汇集了会议概要、视频和资料的网站。
以下是我参考的会议记录摘要。基于各种原因,主要记载了有关Yahoo / Z实验室的内容。
我在日常工作中观看了关于 LT 的视频,对我很有帮助。
请谅解以下内容的错字脱漏,这些都是我边观看视频边记录的备忘录。
雅虎/质子实验室对有状态应用的挑战
会议概要:https://k8sjp.github.io/kubefest-2020/sessions/1/
会议视频:https://www.youtube.com/watch?v=TGBJHzSddA4
概要
-
- Yahoo では歴が長いシステムもあるため、ステートフルアプリケーションでも CaaS で実現したいという要望は多い。
よって Zlab ではステートフルサービスの提供をチャレンジしており、そろそろ GA するみたいだ
成就 / 特点
-
- 210 以上のチームが CaaS を利用している
スポナビも利用しているみたいだ
Node には openstack を利用する
Addon-manager → ZLAB が開発。CaaS を利用すると付随して Grafana / Prometheus などが利用できる。
CSI / ストレージのアップデートも自動化できる
具体的例子是~展示广告(YDN)~
-
- オンプレで稼働していたが、以下の課題を解決したかった
余分にリソースを確保していた
サーバ故障日の運用が手間
リリースにコストが掛かる
Vespa を利用してシステムを構築しているが、データ管理がステートフル。
これを Zlab が提供する CaaS を用いて提供するようにした
1 Pod に 1Server が紐づく構成になっている
苦労した点
Node とストレージの同期が非同期だった
同期にするような設定を加えることで対応
ストレージの IOPS がボトルネック
-1 k8s クラスタに 1ストレージプールの構成を取ることで対応
ローリングアップデートでもデータをロストしないようにする
preStop Hook を利用し、更新データの同期処理を設定
https://kubernetes.io/ja/docs/concepts/containers/container-lifecycle-hooks/
通过了解监视的基础,了解雅虎的大规模集群监视系统的机制。
会议概述:https://k8sjp.github.io/kubefest-2020/sessions/27/
会议视频:https://www.youtube.com/watch?v=wbAK56eDZY4
简要概括
-
- Yahoo の CaaS の監視・運用基礎
- 大量クラスタを少人数で安定稼働させるには?
雅虎的问题
-
- 利用者の増加によるシステムの大型化
-
- 稼働サービスの多様化
- CaaS 提供当初は過剰なリソース要求 / サポートの過拡大 / といった問題
KaaS团队
-
- Z Lab / ヤフー KaaS チーム / サービス開発の3ロールが存在
KaaS チームは k8s バージョアップ, k8s クラスタのデプロイ / ヤフーインスラとのインテグレーションなどを実施
過去の参考発表についても紹介されている
自动化的努力
-
- デプロイ作業の自動化
-
- CI, GitOps による運用自動化
KaaS の構成ファイルが Github で全て管理されている
Pull リクエストがマージされると自動でデプロイが開始される
k8s の Custom Resource Definition の仕組みを利用して構築作業を自動化している
集群监控
-
- KaaS チームは k8s が正常稼働しているか、デフォルト提供のアドオンが正常稼働されているかを監視している。
-
- オブザーバビリティ(可観測性) の3本柱 メトリクス / トレース / ログ
k8s クラスタの監視は Prometheus で監視している
exporter で監視対象のメトリクスを収集している
クラスタの正常稼働 / アドオンの正常稼働 を監視
大量クラスタ監視を集約する
個々のクラスタを関しはできなので、集約システムを構築した
データ量が膨大になるので、アラートメトリクスのもを収集するようにしている
リソースの使いすぎ / 使われていないクラスタの特定なども行っている
KaaS チームは全体最適化の観点で監視している
利用 Helm Chart 创建分散式密集向量搜索引擎 Vald,利用 Operator SDK 开发基于 Helm 的 Operator。
会议摘要:https://k8sjp.github.io/kubefest-2020/sessions/2/
会议视频:https://www.youtube.com/watch?v=aYNKPcn5nkY
简要概述。
-
- Valt とは
k8s 上で稼働する類似ベクトル検索基盤。類似画像検索などで利用
OSS
従来は NGT
メモリスケーラビリティの課題
Valt はコアライブラリとして NGT を利用
瓦尔特的特点
-
- 機能ごとに独立したマイクロサービスとして構成される
-
- gRPC 通信である
-
- yaml によるアプリケーション設定ができる
Helm を用いて利用することができる
创建Heml图表时的创意设计
-
- 数千行規模の yaml を簡単に扱える
-
- 様々なデプロイオプションを提供
機能ごとに独立しているため、機能の on / off が選択可能に
ドキュメンテーションは大事
全てのコンポーネントの一括設定は “default” で設定する
コンポーネントごとの設定も、共通した書き方を意識する。上書きできるように設計する。
ドキュメントは自動生成
norwoodj/helm-docs
values.yaml のコメントを元に Markdown テーブルを作成
values のバリデーションを行える values.schema.json は自作した自動生成ツールをつくったみたいだ。Go で実装
问题
- 各コンポーネントを subchart に切り出す / Chart Tests / Char Hooks などを今後は利用していきたい
Helm的操作员
-
- Operator … アプリケーションやインフラなどのリソース固有の k8s Controller
Prometheus Operator / Redis Operator など
Custom Resource を元にリソースの管理を行う
Operator は開発することもできる
Operator SDK
Helm で手軽に作成することができる
Flux Helm Operator も便利
Kubernetes的潜力不仅仅是部署基础设施的工具。
议程概览:https://k8sjp.github.io/kubefest-2020/sessions/11/
会议录像:https://www.youtube.com/watch?v=tWtT4p96MxI
总结
Yahoo は深層学習を用いて色々なデータを特徴ベクトル化し、ベクトルの距離計算によりデータを NGT に Indexing している
音声 / テキストなど…
NGT は Yahoo Japan 研究所で開発されている
世界トップレベルの高速高精度な近似近傍検索アルゴリズム
メモリ上に全ての Graph and Tree 構造の Index を保持することが特徴
Yahoo ショッピングの 類似商品画像検索 ヤフオクの出品画像からタグを自動推測する
目前的问题
-
- データが増えることによるメモリ不足
-
- シャーディングにて解決した例もある
envoy を利用
RAM 使用量に偏りが生じやすい、など運用に負担がかかる
→ Vald の開発に踏み切ることにした
瓦尔德 (Wǎ’ěrdé)
-
- NGT を k8s 上で動作するようにしたもの
-
- Cloud-Native なアーキテクチャ
-
- LB Gateway / Agent / Discoverer (k8s API の情報を元にサービスディスカバリを実施する)
-
- Helm ベースのデプロイすることができる
-
- Yaml ベースの設定ができる
controller-runtime を利用している
k8s の CRD/API の両方を操作できる
これを用いて, Pod 上で動作する NGT のAgent のリソース管理を実現していたりする
关于Kubernetes中的CI。
会议简介:https://k8sjp.github.io/kubefest-2020/sessions/21/
会议视频:https://www.youtube.com/watch?v=Ma-22scPRV4
概述
-
- コンテナ上で動作するアプリケーションのテストだけではなく、k8s の構成要素自体のテストもすることができる
-
- Dockerfile, k8s Manifest などのテストもすることができる
これらも Shift left に従って早期にチェックするといいだろう
利用 kubectl 的插件机制来提高操作效率。
会议概述: https://k8sjp.github.io/kubefest-2020/sessions/23/
会议录像: https://www.youtube.com/watch?v=bEP4FwBEjfA
简而言之
-
- kubectl のコマンドだけでは面倒な実行があるだろう
そんなときプラグイン機構を使うと便利
krew を利用すると、プラグインの検索、インストールができる
おすすめプラグインも紹介されている
让我们使用Kpt创建可以重组的Manifest Pipeline!
会议概要:https://k8sjp.github.io/kubefest-2020/sessions/23/
会议录像:https://www.youtube.com/watch?v=bEP4FwBEjfA
总结
- Manifest 構築ツールである
关于在Kubernetes原生测试环境中寻找最佳实践的讨论
会议概览:https://k8sjp.github.io/kubefest-2020/sessions/26/
会议录像:https://www.youtube.com/watch?v=hKII_CSWmp8
总结
-
- k8s の controller を使って、k8s をより使いやすくすることができる。最近の流行り
-
- 全ての管理を k8s に任せる kubernetes-native な世界観を目指す
青山さんはそれを実現する kubernetes-native TESTBED を作成した