Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
パブリック/プライベートクラウドでつかう Kubernetes Ryosuke Suto 2017/10/12 Kubernetes Meetup Tokyo #7
Slide 2
Slide 2 text
•須藤 涼介 @strsk •株式会社サイバーエージェント •技術本部 •サービスリライアビリティーグループ(SRG) •QC室 •エンジニア/マネージャー
Slide 3
Slide 3 text
Kubernetes
Slide 4
Slide 4 text
Public Cloud
Slide 5
Slide 5 text
No content
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
•- node 200台 over •- 同時接続数十万 •- デプロイ •- kubetool -> Deploykun •- ChatOps •- リリース共有、カナリアリリース AbemaTV • https://www.wantedly.com/companies/abema/post_articles/73396
Slide 8
Slide 8 text
•- ロギング •- CloudLogging + CloudPub/Sub •- Podの標準出力はLogging •- アプリケーションのログはPub/Subへ •- Pub/Sub -> BigQuery, etc… •- 監視ツール •- Stackdriver, Prometheus AbemaTV • https://www.wantedly.com/companies/abema/post_articles/73396
Slide 9
Slide 9 text
Private Cloud (OpenStack)
Slide 10
Slide 10 text
•- 既存サービスのリプレース用 •- 開発環境構築中 •- レガシー環境、開発手法のモダン化 •- クラスター構築 •- kubespray(Ansible) OpenStack
Slide 11
Slide 11 text
•- Dockerイメージ •- GCR •- ロギング •- 魔改造したFluentdからCloudLoggingへ •- 監視ツール •- Datadog OpenStack
Slide 12
Slide 12 text
Private Cloudでのk8s運用 •- kubesprayでのデプロイが遅め •- 使わない部分も汎用的に記述されているため工夫が必要 •- すべて内部で完結させてしまうと運用コストが高くなる •- 適度に組み合わせて外に逃がす
Slide 13
Slide 13 text
Kubernetes採用の背景
Slide 14
Slide 14 text
•- 組織/システム的にマイクロサービスアーキテクチャを採用するようになる •- であれば各機能ごとにリリースもしやすいDocker一択 •- 開発初期は逆に属人性を生みやすい一面も •- 社内でもノウハウが溜まってくる •- 何より開発が活発
Slide 15
Slide 15 text
課題との歴史
Slide 16
Slide 16 text
デプロイフロー初期 •- あたたかみのある手動デプロイ •- Dockerイメージ自体はCircle CIでビルドしレジストリにPush •- 運用が初めてだったこともあり、開発時はkubectlによるリリースがデフォ •- 開発スケジュールが優先され、デプロイ周りを整えられないままローンチ •- リリース時にSlackに連絡、手動でデプロイして様子を見て反映 •- 当然ながらオペミスが多発
Slide 17
Slide 17 text
デプロイフロー中期 •- 手動カナリアリリース •- ミスしても問題ないよう1Podだけリリースできるツールを開発 •- リリース時は1Podのみリリースし、しばらく問題がなければ全台に適用 •- 大きなミスは起きないまでも根本解決になっていない…
Slide 18
Slide 18 text
デプロイフロー後期 •- ChatOps •- リリース作成もカナリアリリースもSlack上からできるように! •- 手動からの解放 •- オペミスの削減
Slide 19
Slide 19 text
デプロイフロー後期
Slide 20
Slide 20 text
デプロイフロー今後 •- パイプラインベースのCI •- Spinnaker, Concourse CI, etc… •- 新規サービスで採用予定 •- カナリアリリース、判定、ロールバックを自動化 •- 社内に有識者がいたためConcourse CIを採用
Slide 21
Slide 21 text
デプロイフロー今後 •- Concourse CI •- Pivotalが開発 •- Go言語製 •- YAMLでジョブ、パイプラインを記述し結果をUIで見れる
Slide 22
Slide 22 text
デプロイフロー今後 •- Helmの導入検証 •- Kubernetesのパッケージマネージャ(rpmに対してyumのような) •- yamlファイルの作成コストを減らしたい •- Kubernetesの採用がより増えることを見越して
Slide 23
Slide 23 text
大量のロギング •- ログはFluentdで各ログストレージへ •- ログの量が多すぎてFluentdが高負荷に •- 標準出力は変わらずFluentdからCloud Loggingへ •- アプリケーションログはCloud Pub/Subへ送り、Big Queryにバルクインサート
Slide 24
Slide 24 text
大量のメトリクス •- Podの監視はStackdriverでOK •- サービスが拡大し、Podが大量になるとStackdriverの表示が遅延 •- Prometheusの導入 •- ServiceにExporter用のendpointを追加 •- Podが増減しても自動的に収集される •- より詳細かつ円滑な表示が可能に
Slide 25
Slide 25 text
まとめ
Slide 26
Slide 26 text
まとめ •- デプロイフローはまだまだ改善の余地あり •- 規模が大きくなった時のスケーリングが大事(当たり前) •- 自前でkubernetesを立てるときは全部管理しようとしない
Slide 27
Slide 27 text
一緒にはたらく仲間を募集しています! https://cyberagent-career.jp/ recruit/joboffer/81/112359/71-361