「Cloud Native Meetup Tokyo #6」に参加してきました

  • Cloud Native Meetup Tokyo #6 KubeCon + CNCon Recapに参加してきました。

cloudnative.connpass.com

  • あまり詳しい領域ではないですが情報キャッチアップのために参加しました。
  • みなさん説明が論理だっていてわかりやすく雰囲気をつかむことができました。資料公開されているものは改めて確認したいと思います。
タイトル 発表者
Cortexの話をKubeConで聞きたかったっていう話 Shinya Uemura(@uesyn)
KubeCon + CNConに見るetcdの未来 Akihiro Ikezoe(@zoetro)
Monitoring Kubernetes Audit Log by Falco Makoto Hasegawa(@makocchi)
KubeCon + CloudNativeCon 2018 Seattle Recap ~Vitess~ Yutaka Ichikawa(@cyberblack28)
KubeCon + CNConでみたPrometheusの今後 Yoshi Shota(@yosshi_)

Cortexの話をKubeConで聞きたかったっていう話

  • Shinya Uemura(@uesyn)
  • KDDI & Creationline

KubeCon

  • Cortexのセッション一つ

Prometheus

  • メトリクス収集してローカルストレージに保存する
  • Long-term Storageではない

Cortex

  • Prometheusメトリクスのストレージ
  • マルチテナント型のモニタリングサービスを実現する

アーキテクチャ

  • 長期データS3やGCSに保存
  • chunkデータはDynamoDBやCassandraに保存

github.com

マルチテナント

  • リクエストヘッダ内のIDでテナント判断
  • テナントIDをもとにprometheusがふりわけ
  • 認証認可の機能はないのでIDを付与して送る実装を自前でする必要がある

kubernetes上で動かす

  • 「人類にははやすぎる」
  • まだリポジトリにreleaseブランチないしtagもついてない
  • 公式の入門ドキュメントまだない
  • フロント自前実装しないとマルチテナント使えない
    • nginxでやると楽だった

まとめ

  • cortex情報まだ少なめ

KubeCon + CNConに見るetcdの未来

  • Akihiro Ikezoe(@zoetro)
  • Cybozu

KubeCon

  • KubeConでetcd関連のセッション5つ

etcd

  • 分散キーバリューストア
  • HighAvailable
  • 強い整合性
  • Raftによる分散合意
  • k8sやVitessやCoreDNSなど多くの分散システムのバックエンドで使われてる

etcdの未来

  • CoreOS(Redhatに買収された)が作ってる
  • Container Linux
    • Fedora CoreOSが後継
    • 2020年いっぱいはメンテされる
  • rkt
    • Redhatとしては開発ストップ
  • etcdは?
    • CNCFのプロジェクトに採用
    • RedhatからCNCFに寄贈
    • CoreOSの外のメンテナ多いので体制に変化はなさそう

etcdの新機能

  • Raft Learner
  • etcd operator
  • Server Downgrade
  • Cluster init

Raft Learner

  • etcdはRaftという分散合意アルゴリズムを使ってる
  • クラスタからリーダーを選出
  • リーダーがメンバーにハートビート
    • リーダーは常に一つ
  • 問題点
    • データ同期中はI/O負荷高い
    • 同期中にネットワーク分断すると障害起きてしまう
  • Raft Learner
    • 同期中はLearnerという状態になる
    • その間は分散合意のメンバーとしてカウントされない

Cluster init

  • etcdの起動オプションいろいろ設定めんどくさい
  • 自動的にメンバーごとの名前やリッスンするアドレスなどを解決

etcdadm

  • etcdの運用大変
  • k8s上にetcdクラスタの運用
    • etcd operator
  • etcdadm
    • 実機やVMで動かしているときに使う
    • k8sに特化
    • etcdのクラスタの構築運用を自動化してくれる
      • メンバー追加/削除
      • バックアップ/リストア
      • アップグレード/ダウングレード
      • 証明書の管理

トラブルシューティング

  • etcdctl
  • auger
  • etcd-dump-logs

まとめ

  • etcdはk8sをはじめいろいろなところで使われている
  • CNCFに加わりメンテは安心して良さそう
  • 今後は運用者向けに嬉しい機能が出てきそう

Monitoring Kubernetes Audit Log by Falco

概要

  • Falco Deep Diveのセッション内容の紹介

Falcoとは

  • Container Native Runtime Security
  • コンテナ環境のセキュリティをモニタリング
  • CNCFのsandboxプロジェクト
  • モニタリングするだけ遮断とかはしない
  • 検出された時には手遅れだけど検出できる仕組みをつくることは重要

モニタリング

  • DKMS(Dynamic Kernel Module Support)によってmoduleがbuild/installされる
  • Ruleをyamlで書くことでモニタリングするイベントを定義

通知

  • 検知時にプログラム実行できる
  • webhookすればslack通知なんかもできる
  • Falco.yamlに設定

medium.com

k8sのaudit logをモニタリング

  • k8sのaudit log
    • k8s APIの呼び出しを時系列に記録
      • 怪しいリクエストの調査
      • 統計情報の収集
    • ファイル書き出し以外も対応(webhook等)
  • GKEではdefaultで有効になってる

k8sにfalcoを入れる

  • docker runでも動く
  • Helmのchartがあるのでそれが楽
  • falco operatorもある

KubeCon + CloudNativeCon 2018 Seattle Recap ~Vitess~

  • Yutaka Ichikawa(@cyberblack28)
  • APC

セッションサマリ

  • KubeCon
    • Vitess関連は3つくらい
    • 移行事例のセッションも
    • Intro
    • Deep Dive

Vitess

  • MySQLのshardingで水平にスケールするクラウドネイティブなDBクラスタ
  • goで出きててgRPCで通信
  • 事例
  • Sharding
    • 2つ以上のDBに分割してデータを格納
    • パフォーマンス向上
    • 垂直
      • テーブルごとに複数DBに格納
    • 水平
      • 1つのデーブルを複数Shardに分割して格納

HubSpotの事例

  • 10年間AWSを利用
    • 30日でGCP + k8s + Vitessに移行
  • なぜ?
    • シャーディングが魅力的だった
    • k8sとの親和性
    • OSS
  • 500データベースをアップデート

まとめ

  • youtubeの実績は強い
  • プロダクション事例増えつつある
  • k8sとの親和性の高さ
  • システムに合わせてチューニングは必要
  • Vitess as a Serviceなるものが生まれてきそう!?

KubeCon + CNConでみたPrometheusの今後

  • Yoshi Shota(@yosshi_)
  • NTT Communications

Prometheusの課題

  • 長期保管機能ない
    • 保管期間のばすと性能劣化
    • -> アダプターを使ってサードパーティストレージに保存
  • デフォルトで冗長構成がない

長期保管

  • Thanos
  • Cortex
  • M3

Thanos

  • 複数のPrometheusを横断して収集したい
  • 無制限に保管したい

Grafana Loki

  • ログの収集と可視化ツール
  • メトリクスだけではインシデントの全容の半分しかわからない
  • メトリクスとログの参照切り替えコストを最小限に抑える
  • まだAlpha版なのでproductionでは使っちゃだめ

Demo

https://grafana.com/video/loki_intro.mp4