https://k8sjp.connpass.com/event/162343/
基本的に、meetup のまとめと出てきたキーワードのリファレンスです。
ハッシュタグ
#k8sjp
講演
1. Amazon EKS によるスケーラブルな CTR 予測システムを導入した話 (30min) ysdtsy
やりたいこと
- キャリア配信予約は、日次予約をする
- その配信に合わせて日次で、CTR を予測をしたい。
課題
- CTR 処理は、1 時間くらいで処理したいが、10 億レコードで 10 時間程度かかってしまっていた。(1 instance)
- 予測対象レコードは今後増え続ける
目標
そこで、なぜ、k8s を採用したのか。
- 機械学習システムの特有の問題があったため。
- 環境の差異が大きい
→ container の高い再現性 - 継続的な学習・デプロイが必要
→ インフラ導入しやすさ(helm etc..) - 学習と推論の要求リソースを柔軟にしたい
→ リソースを無駄なく、共有可能
処理の流れ
- S3 の Notification で SNS->SQS へ mesage を送る
- SQS PodScaler で、SQS を監視して、Cluster AutoScaler が Pod を配置する
- 担当のパーティションとなっている特徴量ファイルを pod たちがそれぞれ処理し始める。
構成に関して
ノードグループ
ライフサイクル、要求リソースが異なる毎に、ノードグループを分けている。
e.g. 学習用, 推論用 etc…
構成検討
不採用
Kubernetes Job
- クラスター外から job をキックする必要がある
- Parallelism がいまいち?
採用
pub/sub 構成
Auto Sacler
pod
- Terminated Graceful Period Seconds
- 勝手に終了すると、リスタートしてしまうので、SIGKILL を待つようにしている。
node(cluster)
- 処理時以外は、capacity=0
- ASG の max node でチューニング
その他
- Config は、外出しして helm で一元管理
- どのように Model を管理するか
- 外部ストレージ管理にした
- ただし、ビジネス要求次第で、コンテナ内に入れても良いかも。
- EMR で前処理して、S3 に特徴量データが吐き出される。
おわりに
再学習したモデルがヤバかったら、切り戻すみたいな感じになっている。事前にヤバイかどうかがわからないことが現在の課題。
概要
Azure Kubernetes Service で実現する超低予算&(ほぼ)フルマネージド&本格的な WordPress 環境
上記ブログに関する講演でした。
ただの VM から AKS へ移行した話。
システム構成
移行前
移行後
- Kubernetes
- フロントエンド用 node x 2
- バックエンド用 node x 2
- NFS
- Azure Database for MySQL
内容
- WP Super cacheを使っている。
- label によって、配置する pod をどこの node に配置するか振り分けている
- フロントエンド用 node: label=user
- バックエンド用 node: label=admin
- Azure Load Balancerを使っている
- Azure Container Registoryを使っている。
- 基本的には、Wordpress は公式 docker image を使えば良い。
- しかし、一部 plugin が pod が再起動すると消えていたので、docker の entrypoint を変更したものを使うため、ACR を使っている。
- ライフサイクル
- deployment.yaml には、Wordpress の環境変数がいっぱい。
- Wordpress で使う画像・plugin は、mount している NFS サーバーに格納している。
- NFS が一番苦労した。
- Azure Filesを使ってみた。
- レイテンシが高かった。1 ページ開くのに、8s 程度。
- print デバッグしまくった。
- php のプラグインを読み取るところが原因だった。
- Azure NetApp Files
- エンタープライズ向け。
- レイテンシが低下して、よかった!
- しかし、、、2 日間で 4 万円かかっていた。。なぜ。。
- 課金対象は、ボリュームではなく、容量プールだったことに気づく。
- 最低 4TiB から課金されるらしい。
- VM 上に NFS サーバーを構築
- 気になるお値段!?
- 35,398 円/月
- 色々使っている割には、安いなと思っています笑
質疑応答
Q. nginx-controller ではなく、Azure Application Gateway ではダメか?
A. 乗り換えを実施していた前後に、Azure Application Gateway の Update があって、改善された?ので、今後そうしようと思っています!
Q. NFS が障害発生した場合どうしようと考えていますか?
A. とりあえず、VM 自体のバックアップをとって、何かあったらバックアップしようと思っています。
Q. Wordpress は攻撃対象になりがちですが、WAF とかの対応はどうしていますか?
A. 今後検討予定です。
LT 大会
c.f. blog: Kubernetes Leader Election in Depth
- リーダー選挙は分散システム内の、、、まぁよくわからないと。
- 非同期のアーキテクチャ
- Reconciliation Loop
- 宣⾔した状態を維持するための仕組み。
- e.g. Deployment Controller
- 2 つの controller が動いている場合
- もう一方が作ろうとすると、すでに作成しているので、AlreadyExists となる。
- そこで、いずれかに Leader を設ける。
- パターンは2つ
- Kubernetes では Object で分散ロックをしている
- 色々な Cloud が辛い件
- k8s/istio の version up 問題が辛い
- 稀に引くバグ
- セキュリティを考えると、Cloud Resource をちゃんと面倒みないとダメ。
- もう疲れてきました。(パトラッシュ!)
- そこで、Cloud Run
- 使い方
- GCR のイメージを選択
- プラットフォームとリージョン設定
- 認証設定
- リビジョン設定
- メリット
- インフラみなくて楽!
- デプロイめっちゃ楽!
- リクエストに応じて自動スケーリング!
- StackDriver Logging も自動連携してくれる!
- 課題
- 最近の技術選定するときの優先順位
- 1 位: Cloud Run
- 2 位: GAE
- 3 位: GKE
- 取り上げる AKS の Issueの説明。
- AKS のワーカノードにユーザーが意図しない形で IOPS の上限値を「500」が設定されてしまう。
- NotReady になったり、、、
- Istio や Operator のパフォーマンス悪化と不安定
- ワーカーノード-他の Azure サービス間のネットワークレイテンシの低下 etc…
- Issue としてあがっている解決策は
- 札束で殴る or
- Observability は重要という話。
- とはいえ、複合的な原因の場合も多く、かつ、結果、プロバイダー側の問題ってなることがほとんどじゃね?
- そんなの Observability を向上させたところで、解決できるわけないじゃないか。
- そこで、Chaos-Mesh
- 今IPv6がアツい!
- Kind(Kubernetes in Docker)が IPv6 が部分的にサポートした。
- 新卒の開発環境もこれで動いている。
- 楽になったこと
- マルチノードクラスタを使ってスムーズに開発 etc…
- つらいこと
- ネットワーク知識が多少必要
- OSS の外部 LB がない etc…
5. Kubernetes を利用したエッジクラスタロボティクス分散システムの構築 - @FujitaTomoya
- ロボットの話。
- Robotics Operating System
- ロボットやる人はだいたい知っているもの。OSS が盛ん。
- 基本的な動きは、センシングデータをもらって、リフレクションする
- ロボット間でダイナミックに繋がるようにしたい!?
- node discovery
- ロボット動くので、wifi 圏外になったりするので、discovery が必要。
さいごに
すいません。後半の LT ちょいちょいわからないところもあって、うまくまとめられなかったです。。。特に Sony の方の ROS のやつとかちゃんと理解したかったが、あまり理解できていないです。。笑
LT の方々の発表もどれもすごく面白かったです!スライドが公開されたら更新します。