Pro Yearly is on sale from $80 to $50! »

Z Lab の教育への取組 / Cloud Native Education Efforts at Z Lab

365dfdeb6858bb8b82baedb582bfe1cf?s=47 Takashi Kusumi
September 25, 2019

Z Lab の教育への取組 / Cloud Native Education Efforts at Z Lab

Cloud Native Deep Dive #5
https://deepcn.connpass.com/event/143049/

365dfdeb6858bb8b82baedb582bfe1cf?s=128

Takashi Kusumi

September 25, 2019
Tweet

Transcript

  1. ゼットラボの教育への取り組み Cloud Native Deep Dive #5 教育 Takashi Kusumi <tkusumi@zlab.co.jp>

  2. アジェンダ ▶ カスタマーサクセスチーム ▶ 教育への取り組み + ワークショップ、オフィスアワー etc ▶ ノウハウ獲得のための取り組み

    + Changelog 調査、アドオン提供 etc ▶ 課題 2
  3. カスタマーサクセスチーム

  4. ゼットラボ株式会社 / Z Lab Corporation ▶ 2015年に設⽴されたヤフー株式会社の 100% ⼦会社 ▶

    ヤフーのインフラ課題に対して R&D でソリューション提供 ▶ Kubernetes as a Service を開発・提供 4
  5. カスタマーサクセスチーム ▶ 利⽤者への導⼊推進 + 導⼊サポート + 技術検証 + 障害調査 ▶

    クラスタアドオンの提供 + CoreDNS, Prometheus, Grafana など ▶ 技術調査 5
  6. 教育への取り組み

  7. Kubernetes ワークショップ 7 ▶ 知識編のセミナー(2h)とワー クショップ(3h)の 2 回を開催 ▶ 引き継ぎを⾏い定期開催中

    + minikube で実施
  8. Kubernetes ワークショップ ▶ 最初は kubectl run による命令的なデプロイを実施 ▶ その後代表的なリソース(Deployment, Ingress

    など) を説明 + 宣⾔的な管理で説明 + リソースの概要⾃体はセミナー編でも紹介 ▶ ⼤変なところ + Pod / ReplicaSet / Deployment の関係 + Ingress / Service の関係 + セットアップ周り (各種バージョン、認証) 8
  9. 実践編セミナー 9 プロダクションに向けて必要な知識を紹介

  10. 実践編セミナー 1. Dockerfile のベストプラクティス 2. Production Ready な Pod を作る

    3. アプリケーションとクラスタのバージョンアップに備える 4. Pod で動的データを扱う 5. 宣⾔的な管理について 6. 開発中のログの確認⽅法 7. ドキュメントの紹介 10
  11. オフィスアワー ▶ 隔週で約2時間のオフィスアワーを実施 ▶ 相談例 + ボトルネック分析 + クラスタ構成 +

    アプリケーション構成 + Kubernetes の質問 (e.g. request, limit 使い分け) 11
  12. ドキュメント提供 アドオンの利⽤ガイドやベストプラクティスなどを提供 12

  13. ドキュメント例 ▶ メトリクス(Prometheus)の設定⽅法 ▶ Ingress の設定⽅法 ▶ キャパシティプランニングに必要な情報 ▶ プロダクション向けのマニフェストの書き⽅

    ▶ Graceful Shutdown について ▶ 複数の環境を Namespace で管理 13
  14. プロジェクトサポート ▶ いくつかの利⽤者のプロジェクトを直接サポート + ノウハウを広めてもらうハブになることも期待 ▶ 基本は Slack ベースで対⾯やビデオ会議などを適宜実施 ▶

    サポート内容の例 + アーキテクチャ相談 + 負荷試験 + マニフェストレビュー 14
  15. マニフェストのポリシーの提供 (予定) マニフェストの注意点を conftest のポリシーとして提供予定 e.g. 最新の API Version の利⽤、Probe

    の設定、latest タグの⾮推奨 15
  16. マニフェストのポリシーの提供 (予定) 16 ポリシーは Open Policy Agent のポリシー⾔語 Rego で記述

  17. ノウハウ獲得への取り組み

  18. Kubernetes ChangeLog 調査 ▶ マイナーバージョン + 複数⼈で調査し社外公開 + アドオンの管理もあるため、 リリースマネージャーを置く

    ▶ パッチバージョン + 毎パッチを社内⽤に影響調査 18
  19. アドオンの開発・管理 ▶ クラスタのアドオンを提供 + CoreDNS, Prometheus, Grafana など + ValidationWebhook

    や client-go を使ったコントローラーに よるコンポーネントも提供 ▶ ⾮互換の変更は Kubernetes のマイナーに合わせて管理 ▶ ⾃動でアドオンをアップデートする仕組みを構築 + アップデータ本体は別の仕組みでデプロイしている 19
  20. アドオン: Grafana Dashboard 20

  21. 障害調査 21 ▶ 利⽤者からエスカレーションされた問題の調査 ▶ 利⽤者が増えてきたことにより顕著化する問題も増えてた ▶ 調査例 + Node

    のリソース枯渇時の問題 (eviction-manager の挙動) + Pod の作成のタイムアウト時にリトライされない問題 + 細かい設定ミス (iptables のロックのマウント漏れなど)
  22. Kubernetes Failure Stories 22 Zalando ࣾͷ @hjacobs ͞Μ͕·ͱΊͨ Kubernetes ͷࣦഊஊू

    https://github.com/hjacobs/kubernetes-failure-stories
  23. 技術調査・検証 ▶ コミュニティの情報やユーザの問い合わせを元に調査・検証 ▶ 調査例 + WebSocket 同時接続数の検証 + Grafana

    loki の評価・検証 + Graceful Shutdown のサンプル実装 + Java のコンテナ対応 + CI / CD 検証 23
  24. 課題

  25. 利⽤者側での問題の切り分け ▶ 問題がKubernetes などインフラ側なのかアプリケーション側なのかの切り分 けが難しい + パフォーマンス劣化やタイムアウトなど ▶ Kubernetes に載せるタイミングでアプリも刷新するケースも多い

    ▶ 権限による制限も課題 (kubectl exec など) ▶ 今後の対策 + 切り分け⽅のドキュメントの提供 + メトリクス、ダッシュボードの拡充 + APM の導⼊ 25
  26. ドキュメント更新の認知 ▶ ドキュメントの更新や新機能を認知してもらうのが難しい + 新機能の周知もドキュメントのリリースノートで⾏っている ▶ 今後の対策 + 検索性の向上 +

    より積極的な周知 26
  27. 必要な知識の範囲が広い ▶ 周辺技術が同時に多く変わる可能性が⾼い + Linux コンテナやKubernetes ⾃体の知識 + モニタリング (e.g.

    Prometheus) + アプリケーションの対応 (e.g. Graceful Shutdown) + CI/CD ▶ 今後の対策 + ドキュメントやセミナーの拡充 + 事例共有の機会を増やす 27
  28. まとめ

  29. まとめ ▶ Kubernetes ワークショップ ▶ 実践編セミナー ▶ オフィスアワーの実施 ▶ ドキュメント提供

    ▶ プロジェクトサポート ▶ マニフェストポリシー提供 29 教育への取り組み ノウハウ獲得への取り組み ▶ Kubernetes Changelog 調査 ▶ アドオンの開発・管理 ▶ 障害調査 ▶ 技術調査・検証
  30. 30 We are hiring! ご興味ある⽅は、ゼットラボ社員に直接ご連絡ください