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 を作成した

广告
将在 10 秒后关闭
bannerAds