KubeConで(自分が)面白かったと思ったセッションまとめ
※網羅しているわけではなくて抜粋
Multi Cluster / 巨大クラスタ / スケーリング系 / オートメーション
Handling Risky Business: Cluster Upgrades
LyftのK8sクラスタのバージョン自動更新の仕組みの話
TriggerベースのOperatorをGoで書いていて、Rotateモード(バージョンアップを実行)・Freezeモード(バージョンアップを停止)の2種類をベースにしている
基本は自動実行、問題があればFreezeモードで手動対応といった形で対応する
Rotateの方法は、新しいNodeを立てて古いNodeを削除する(Nodeの)RollingUpdate
Scaling Kubernetes to Thousands of Nodes Across Multiple Clusters
Airbnbで、ビジネスが成長するにつれてNodeが450台 → 900台 → 1800台 → 2400台とK8sクラスタが肥大化していってMulti Clusterに分割した
Multi Clusterを作るにあたって、Cluster Typeを定義して、そのインスタンスとしてClusterを払い出している
裏側はChefやTerraform, Helmなど様々な技術を組み合わせている
現在は22Cluster Type, 36Cluster, 7000+Nodeの規模
Rethinking the K8s DNS for the Modern Enterprise
Multi Cloud, Multi Clusterを考える上で重要になるのがDNS
DNSを露出して、Cluster間でService Discoveryできる仕組みを作る必要がある
ただ、Kuberntes DNSではCluster Resourceで隔離できない・動的設定変更できない・Secure Queryに対応できていない、といった課題もある
この発表ではEnvoyをDNS Layerの前にProxyとして置くことでその課題を解決することを提案している
eBay Search On K8s
現在の規模は60+Cluster, 2,000+Node, 160,000+Podと凄まじい規模
PVCも活用していて、StatefulなWorkloadも多く動いていて、その点を工夫している
例えば、検索サービス用に、Matrix deploymentというStatefulSetを払い出すCRDを用意している模様
Tinder’s Kubernetes Move
現在の規模は、~2000Node, 6Control Plane Master, 25,000~30,000Podとこれも凄まじい規模
レガシー時のEC2 AutoScaling GroupからMicro Service + Kubernetesに移行していった
大規模特有の問題として、ARP・DNS・LoadBalancingで出た問題を共有している
To Infinite Scale and Beyond: Operating Kubernetes Past the Steady State
タイトルにもあるように、無限のスケーリングのためには何が必要か、を考えるセッション
・クラスタの自動更新
・Multi Clusterのデプロイ管理
を主軸に深掘りしている
障害を想定しろ!
障害は起きる
一つのクラスタは(もはや)Single Point of Failure!
といった内容もあって、そうしたMulti Clusterが当たり前になる時代になっていくのかもしれない、と少し思った
A Toolkit for Simulating Kubernetes Scheduling at Scale
JD.comが、デプロイ時の影響確認用にシミュレーター(JoySim)を開発した話
巨大K8sクラスタのスケーリングやパフォーマンスの推定に利用している
Service Mesh系
Life Outside the Cluster: Adding Virtual Machines to an Envoy Service Mesh
VMにIstioを入れるユースケースを説明
KubernetesクラスタとVM環境との繋ぎこみをケースに説明している
レガシー環境に、ServiceMeshを入れて、ServiceDiscoveryの恩恵を得たい、といったケースにあっているかもしれない
How Spotify Migrated HTTP Ingress System to Envoy
SpotifyでNginx + HAProxyなどの古いアーキテクチャからEnvoyへ移行した話
古いアーキテクチャでService Discoveryや運用コストの悩みから移行した
ServiceMeshで、Envoyを古い環境に入れたいときに参考になるかもしれない(可能ならMigrationに直面する場面を減らせとも言ってるが)
Stitching a Service Mesh Across Hundreds of Discrete Networks
160Cluster, 6,600Node, 62,000Podの規模で、ServiceMeshを組み込んだ話
ServiceMeshの構築で、Shard Control Plane → Multiple Control Plane → Multiple + Admiral(自作OSS)といった統合を進めていった
Cluster LayerでServiceMeshを実現できた、という非常に勇気をもらえる内容だった
Stateful Application
Running Large-Scale Stateful Workloads On Kubernetes at Lyft
LyftでのStateful workloadのためのプラットフォームを構築した話
FlyteというML&Data用のオーケーストレータを簡単にする
Operatorも統合している
CNCFプロジェクト系
Evolving the Kubernetes Ingress APIs to GA and Beyond
IngressのGA(v1)とその次のAPI構想(v2)についての発表
v1: IngressClass, backend → defaultBackend, PathTypeなど
v2: GatewayClass, Gateway, Route, ServiceにAPI Resourceを分割(未定)
Helm 3 Deep Dive
Helm3のアーキテクチャの変更、移行などについて全て説明
Helm3はHelm2からアーキテクチャ・インフラ部分の変更のみなので、Helm2と共存可能
Helm2 → Helm3に移行するPluginも提供されている
CoreDNS Deep Dive
Pluginの設定がメイン
個人的には「onlyone」Pluginが気になる
CoreDNS: Beyond the Basics
応用編として、DNSSECやDNS Over TLSなどについて説明。他にもトリッキーなテクニックを紹介
全く知らなかったが、MultiCluster Service DiscoveryでCoreDNS公式でリポジトリもあるらしい
https://github.com/coredns/multicluster-dns
その他
The Gotchas of Zero-Downtime Traffic /w Kubernetes
zero-downtimeで(Web)サービスを更新するために必要な物をまとめている
- entrypointはシグナルをハンドルすべき
- STOPSIGNALが必要になるかもしれない
- Liveness / Readiness Probeは異なる間隔を設定する
- 接続を受け付けないように、preStopではSleepを入れる
- apps/v1 Deploymentを使う
- RollingUpdateの間にウォームアップを行う
- SideCarのシャットダウンを同期させる
Understanding and Troubleshooting the eBPF Datapath in Cilium
eBPFとCilium(CNI)の説明