先日Japan Container Days v18.04 というイベントに参加してきました。東京のベルサール神田で行われ参加者500人規模のカンファレンスとなりました。
だいぶブログに書くまで時間が空いてしまいました。ここでは聞いた講演についてメモを載せていきます。
keynote
サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術
- サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術 // Speaker Deck
- AKE=プライベートコンテナ基盤
- Adtechは性能要件がシビア...
- Minikube
- minikube 触ってみるか(takayuki)
- 部署内ではGKE/ECSを使ってる
- オンプレ上に基盤を構築(-> 今回の話)
- 2人で作った(約10ヶ月)
- こういう基盤(GKE含む)を使うと最初は辛いけど、アプリケーションをContainerizeしてくると開発サイクルが早くなる
- E2Eテストツールが用意されている(Sonobuoy, bosh)
- Openstack既に使ってるのでintegrationもやってるよ
- Adtechブログに詳細のってる
- メトリクスはdatadog/prometheus
マイクロサービスアプリケーションとしての機械学習
- マイクロサービスアプリケーションとしての機械学習 // Speaker Deck
- メルカリの機械学習エンジニアが登壇
- 出品時の画像認識機能(タイトル、ブランド、カテゴリを自働入力してくれる) on Kubernetes
- デモ動画ではレスポンスも問題ない感じにできててすごい
- 機械学習の課題
- 計算時間(数100ms-数sec)
- サーバーコスト
- 学習モデルとコードの整合性が必要になる
- 学習環境というのが必要
- 画像認識時に実は色推定をしていて色情報も取得している
- 機械学習エンジニアが1からDockerfile作ってSREに渡したら1週間でKubernetes + AWS環境ができてた
- Microservice 基盤が整備されつつあったタイミングだった
- Spinnakerでデプロイ
- 機械学習導入初期時は手動運用していたが、すぐに運用の限界がきてしまった
- 機械学習モデルはPersistent Volume(?)に入っている
- 機械学習エンジニアがどこまでやるか問題(システム運用も?)
"Yahoo! JAPANのKubernetes-as-a-Service"で加速するアプリケーション開発
- "Yahoo! JAPAN の Kubernetes-as-a-Service" で加速するアプリケーション開発
- ズバトクon Kubernetesの話
- 課題
- 通常時の数倍〜数十倍アクセスが来るキャンペーンがあると、容易にスケールアウト、スケールアップできなかった
- リリースの自動化が進んでなく頻繁にリリースできてなかった
- 新たな環境の用意がしんどい
- Concourse CI
- PHP -> Javaへ
- 次の環境にデプロイするためにCIサーバーからプルリクエストが投げられる
- マージされるとデプロイが始まる
- Prometheus使ってる
- OpenStackのハイパーバイザー落ちたら、自働復旧している
- Cloud Nativeな設計思想になれていく
- Kubernetes-as-a-Serviceの話(ZLab須田さん)
- GKE/Azure Container Service/EKS的なもの
- Yahoo!JapanのKaaSを開発している
- 2017/10〜からプロダクション利用
- 障害や問題のあるノードを修復(セルフヒーリング)
- 障害のあるノードを自働検知後、自働削除
- 必要なノード数になるまで自働でノードを作成する
- クラスタのアップグレードをゼロダウンタイムで
- Kubernetesクラスタのオペレーションは人間のやる仕事ではないので、機械に任せる
- Kubernetes自体が分散システムである
- CustomResourceDefinitions(CRD)
Kubernetes x PaaS - コンテナアプリケーションのNoOpsへの挑戦
- Kubernetes x PaaS – コンテナアプリケーションのNoOpsへの挑戦
- NoOps?
- システムに自律的な回復性を持たせる
- 無停止メンテナンス
- 自律的リソース調整
- Kubertetesにおいては...?
- Horizontal scaling, Automated rollouts and rollbacks, self-healing
- Podのフェーズ
- Probe: Liveness, Readiness
- Restart policy
- Rolling update
- StatefulSetという概念があるけど、これもRollingupdateに対応している
- Auto scale podのスケーリングと、クラスタサイズのスケーリング(ノードの数の調整)
- ステートフルなワークロードをKubernetesで管理するのはしんどい
- 回復力を持つプラットフォーム(PaaS, SaaS)を使っていくのがいいのでは
- Open Service Broker API + Service Catalog
- これらを使うことで外部のプラットフォームのサービス(Database等)を利用できるようになる
- 統一されたインターフェース
- managed Kubernetes
- サーバレスコンテナサービス
- Fargate的なやつがAzureでもある
- Virtual Kubelet
- サービス間通信・通信の回復性
- Service Mesh(Istioなど)
- Helm
2018年のDocker・Moby
- [表示が崩れる場合ダウンロードしてご覧ください] 2018年のDocker・Moby
- Docker Tokyo Community
- ランタイム、オーケストレータの歴史について
- DockerとK8sの関係が逆転した
- dockerからk8sを管理できる
- k8sはCRIを通じてcontainerdを扱える
- docker buildの後継・代替
- BuildKit
- MobyProjectに入っている
- Dockerfileを中間言語(LLB DAG)にコンパイルする
- DAGの記述はmulti-stage Dockerfileで書ける
- コンテナ以外のものもビルドできる(ex. goの並行ビルド)
- P2Pのレジストリが流行ってくるのでは?(dragonflyなど)
- rootless runcでセキュリティリスクの影響範囲を抑える
- VM型ランタイムも流行ってくるのでは?
今こそKubernetes。最高の仕事道具で使いこなそう
- Japan Container Days: 「今こそKubernetes。最高の仕事道具で使いこなそう」by capsmalt
- beginner向けセッション
- ロードバランシング、ローリングアップデート、ネットワーク管理など...
- 学習コスト高いんだけど、マネージドサービスとして提供しているんでそれ使ったら良さげ
- K8sの周辺ツール?まあいっぱいあるよね
- みんなが継続的にコミットして更新される。またサポートがあるのは重要なファクター
- K8sで開発環境を作る
- Helm使おう(また出てきた)
- システム構成のパッケージングを担う
- 1クラスター内で複数のネームスペースを使って環境を隔離できる
- パッケージングをどの単位でバージョン管理するのかは悩みどころ
- バージョンの切り替え(upgrade, rollback)が可能
Kubernetesのない世界 すべてがサーバーレスになる
- Kubernetesのない世界 すべてがサーバーレスになる
- ソフトウェアを通じて価値を提供する、ということがわれわれがすべきこと
- 手段はserverlessでもkubernetesでもよい
- Opsにかけるコストを減らしていきたい
- 将来的にはVMもKubernetesもいらなくなって、ただコンテナを動かす環境が流行るのでは(FargateとかAzure Container Instanceとか)
- CNCFでもサーバーレスのランドスケープがある
- Observability問題
- Lambdaにはエージェントをインストールできない!!!
- IOpipe(Lambda functionをラップしてメトリクスを収集するやつ)
- Epsagon, THUNDRA(CloudWatchLogsにログを吐いてそれを独自のダッシュボードで可視化できる)
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法!
- 『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
- k8sの概念の難しさ
- YAML書いてばっかり?
- キャッチアップしてチームに普及しようとすると途端に疲れる...
- コンテナの次の技術を考えてみる
- 10年前はクラウドが出てきたところ
- 5年前はクラウドが定着、プロビジョニング、CI/CD自動化
- 次の流れはPaaS, Serverlessなのでは
- 開発者に価値を提供するには
- Serverlessプラットフォームではコンテナ技術を使ってfunctionを実行している
- CNCF Serverless whitepaper
- プラットフォームのカテゴリによってメリット・デメリットあるんで適切に使い分ければいいのでは?
CNCF: Evolving the Container Landscape
- [B-5] CNCF: Evolving the Container Landscape [Chris Aniszczyk(CNCF)] - YouTube
- @craさん
- 英語による講演だったので以下認識違いがあるかもしれませんご了承ください
- Cloud native technologyを普及する
- cncf.ci: cross cloud ci
- certified K8s (様々なプロバイダが存在している)
- What is cloud native?
- vmからIaas, PaaS, container, K8sと時代が流れてきた
- パッケージングやオーケストレーションはcloud nativeの一つの側面に過ぎない
- l.cncf.io
- many paths to cloud native
- containerization
- CI/CD
- Orchestration
- Observability(prometheus/fluentd/Jaeger)
- Service Mesh(envoy/kinkerd)
- Networking(CNI)
- Distributed database(Vitess)
- Messaging(NATS/gRPC)
- container runtimes(containerd/rkt)
- software distribution(TUF/Notary)
- 完璧なものではないので、知見とか改善あったらissue出してほしい
- serverless
- cloudevents specification
- CNCF sandbox(early stage projects)
所感
- K8sの話題が多かった
- Dockerコンテナを本番環境で使うにあたっては信頼できるプラットフォームになっているっぽい
- Serverlessの話もちらほらでてきていた
- 一見コンテナと関係なさそうだけど、Cloud Nativeの文脈にも登場している
- コンテナの生態系の進化について行けてない
- K8s触れてないしそれに付随するツール達も同様
- たまには大規模なカンファレンスに参加するのもよい
- ありきたりだけど良い刺激になる(普段聞けないような話を聞ける)
- 人が多くパワーを使うのでその分ヘロヘロにはなる
写真
ランチセッションで配給されました。全日のイベントでお昼ご飯の心配をしなくていいのはいいですね〜。
アフターパーティーも大盛況。
アフターパーティーにて次回のJapan Container Days開催が発表されサイトも更新されました。