JapanContainerDaysに参加しました!
JapanContainerDaysの概要
- KubernetesやDockerの仕組みや導入例などの紹介
参加したセッション
- サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術
- マイクロサービスアプリケーションとしての機械学習
- "Yahoo! JAPAN の Kubernetes-as-a-Service" で加速するアプリケーション開発
- Kubernetesのセキュリティのベストプラクティス
- Horizontal Pod Autoscalers
- Container Networking Deep Dive
- Spinnakerを利用したKubernetesへの継続的デリバリ
- Kubernetes 運用設計ガイド
- Dockerだけじゃないコンテナruntime徹底比較!
- Istioと共にマイクロサービスに立ち向かえ!
サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術
概要
- AKEはKuernetesがまだ本番で使用できないときに作成されたプライベートコンテナ基盤
- 主な機能
- Docker swarmとKuernetes
- OpenStack integrationとの連携
- LoadBalancer
- アドオン
- Kibana
- Elasticsearch
- Datadog etc...
- サーバーの拡張
- 複数のContainerRuntimeのサポート予定
感想
- vanilla Heatを使用してKubernetesのクラスタを構築しているが、vanilla Heatを何か知らなかった
- 独自のシステムなので管理や更新が大変と言っていた(そうだろうなという感じはすごいしていた)
- OSのイメージを読み込んでスケールするのでKubersprayよりもスケールするのが早いらしい
- Kubernetesでは間に合わないくらいスケールしないといけないのだろうか、それともすでに使用しているサービスがAKEに依存しているのだろうか
マイクロサービスアプリケーションとしての機械学習
概要
- 機械学習のモデルをKubernetes上で動かすまでの話
感想
"Yahoo! JAPAN の Kubernetes-as-a-Service" で加速するアプリケーション開発
www.slideshare.net
概要
- Yahoo!すばとくのサービスをPHPからJavaにリプレイスにインフラにKubernetes-as-a-Serviceを導入
- リリースまで数時間かかっていたが10分程度で終了するようになった
- 開発者の思考をKubernetesにあったものにすることが必要だった
- Kubernetes-as-a-Serviceは開発着手から1年ほどで一部の本番環境で利用されるようになった
- Kubernetes-as-a-Serviceの主な機能
- 開発者が自由にクラスを作成・削除・設定変更可能
- セルフヒーリング
- モニタリング
- スケーラブル
- 目標は全てを自動化すること
感想
- 大企業は先進的な技術はあまり導入していないという、なぞの固定概念を持っていたが一気に払拭された
- CAのようにインフラのツールを作成しており純粋にすごいと思った
- リリースまで10分で終わるということはデプロイしてからの起動までがだいぶ早そう
- 全てを自動化するという目標かっこいい、自分もやっていきたい
Kubernetesのセキュリティのベストプラクティス
概要
- webアプリケーションをKubernetes上で動かす時を例にしたセキュリティの話
- 必要な箇所に必要な分だけの権限を付与する
- pod内の処理はrootユーザー以外で実行するようにする
- AppArmmorの設定をする
- 可能ならSELinuxを利用する
- seccomp の設定をする
- syscallの一部を許可する
- linuxのnamespaceを突破を防ぐ
感想
- Kubernetesを本番環境に導入しようとしているがセキュリティについてあまり知らなかったのでとても参考になった
- トークンを抜く方法は説明されなかったが抜く方法があるのだろうか
- Dockerを使用しているときnamespace問題を感じていたが解決の方法を知らなかった
- (英語で聞くのかなと思っていた日本語で説明していただけのでとても助かった)
Horizontal Pod Autoscalers
概要
- Multi Metricsを利用してスケールさせる話
- マイクロサービスが 124 ある
- カスタムメトリクスをPrometheusで処理をさせている
感想
- Prometheusという監視ツールを初めて知った。ここ1年くらいででてきたらしい
- スケールさせる方法を具体的に認識していなかったのでとても参考になった
- シナリオ作成の大切を理解した
Container Networking Deep Dive
www.slideshare.net
概要
- コンテナで使用されているネットワークの話
- FlannelとCalicoの比較
- ネットワークのパフォーマス改善について
感想
- ネットワークに無知すぎて聞いてて辛くなった
- 雰囲気で使うのはやめたいと強く思った
Spinnakerを利用したKubernetesへの継続的デリバリ
概要
- Spinnakerの利用方法についての話
- さまざまなデプロイ方法を提供している
- 障害の耐久テストをできる
感想
- 現在はRailsアプリをCapistranoでKubernetesにデプロイをしているので、Spinnakerを使いたくなった
- 障害の耐久テストは実施できる環境がなくチームとして問題になっていたのでぜひ試したい
Kubernetes 運用設計ガイド
概要
- Kubernetesを導入する時の話
- Kubernetesを導入するだけではなく、人が作るので技術と組織は表裏一体。チームを分けて責務を明確にすることが大切
- 速く動く。速さというのは急ぐことからではなく、何かを無くすことから生まれる
- Kubernetes自体の狙いを理解し、それにそった運用をする
- 環境ごとにクラスタを作成すると環境ごとに管理のコストが発生するので、リージョンごとにクラスタは1つにし、namespaceで環境ごとにわける
- 管理・監視が難しくなるので1コンテナ1プロセスにする
感想
- 監視がとても大切(当たり前
- チームのあり方、責務の分担とても参考になった
- まさに本番に導入しようとしていたので、どこまでやって本番に導入するかが見えた(気がする
- GUIのデプロイツールはコードに残らないから良くないらしい
- 技術だけの話ではなくチームの話をしているのは珍しいなと思った
- 自分的にはこのイベントで一番いいなぁと感じる内容だった
Dockerだけじゃないコンテナ runtime 徹底比較!
概要
- Kubernetesでstableになっているruntimeの比較
- 主な種類
- Docker
- Frakti
- cri-o
- containerd
- OCI とCRI という規格が定められており、Kubernetesとruntimeの連携で利用されている
- Container runtimeの中にruntimeが存在し、Container runtimeはHigh-level runtime、runtimeはLow-level runtimeと呼ばれている
- runtime との組み合わせでパフォーマンスが変化する。いまのところDockerが一番良さそう
感想
- runtimeという言葉を初めて聞いた
- Kubernetesがどこでコンテナを操作してるかイマイチ理解していなかったが少し理解することができた
- KubernetesとDockerの組み合わせしかないと思っていたのでとても面白かった
- OCIとCRIというのも初めて聞いた
Istioと共にマイクロサービスに立ち向かえ!
概要
- Kubernetesを利用したマイクロサービスの運用
- 複雑になったアプリケーション間の通信の管理にIstioを利用する
- Istioを利用すると障害耐久テストを行うことができる
感想
- Istio すごい。障害対応のテストをyamlで定義できるのすごい。
- 導入したいが半年くらいインフラだけを担当しないとしっかり導入できないような気がしている
- マイクロサービスの運用が辛いとおっしゃっている方が多かった