Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2023年度版! Chatwork流Kubernetesの運用方法

hanayo04
December 07, 2023

2023年度版! Chatwork流Kubernetesの運用方法

2023/12/6に「耐障害性向上・パフォーマンス改善・運用負荷軽減をどう実現する? 事業を支えるSREのノウハウを共有」でお話しした際の資料です。

hanayo04

December 07, 2023
Tweet

More Decks by hanayo04

Other Decks in Technology

Transcript

  1. 取り組み①EC2のコスト削減 EC2の台数が増加し、コストも高くなってしまう 課題① スポットインスタンスが以前より安定した 「Chatwork」 Appはステートレス EKSのNodeにEC2スポットインスタンスを導入し、コストを削減 EC2の種類  オンデマンド: 時間課金制。通常時はオンデマンドで起動。

     リザーブド: 年単位で購入。需要が固定されているシステムに適している。  スポット: AWS上で使われていない余剰インスタンスを使用。一番低価格だが、入札金額が スポット料金を下回ると停止する。
  2. 取り組み②balloon✖Cluster Autoscaler 9 Podがスケールアウトされる際に、EC2の起動を待っているとス ケールが間に合わず不安定になってしまう 課題② CPU 60% CPU 60%

    CPU 40% CPU 40% CPU 40% HPA CPU使用率が 50%を超えてい るのでPodを 増やします もうPodを起動 する余力ないの でNodeを追加し ます CA Node(EC2)の起動に数分かかってしまう
  3. 取り組み②balloon✖Cluster Autoscaler balloonであらかじめ余剰Nodeを確保! balloonとは・・・ SRE部の坂本さんが作った余剰ノードを確保しておくための仕組み 1 balloon Pod 2.5 「Chatwork」App

    Pod 通常時は5Pod、繁忙時間帯は8Pod起動させている priorityを通常より低くしておくことで、 「Chatwork」Appの起動時に余剰がない場合はballoon Podをkillして 空いたリソースに「Chatwork」Appを起動することが出来る 参考: 今回紹介していないk8sのツールについては坂本さんのブログへ! ( https://creators-note.chatwork.com/entry/2020/12/23/100000 )
  4. 取り組み②balloon✖Cluster Autoscaler balloonであらかじめ余剰Nodeを確保! CPU 60% CPU 60% CPU 40% CPU

    40% CPU 40% HPA CPU使用率が 50%を超えてい るのでPodを 増やします balloon balloon Podを起 動する余力ない のでNodeを追加 します CA サービスが不安定になることなくスケールが可能に!
  5. 毎日本番リリースしてます 14 詳しくは過去の古屋さんの登壇資料へ! ( https://pages.awscloud.com/rs/112-TZM-766/images/20220804-AWS-kubernetes_3_Chatwork.pdf ) App Manifest EKS(app) EKS

    (manager) Manifest 1.Master merge 3.Push 2.Build 4.Update 5. Polling 7.Apply 開発者 6. Press the Sync button SREが間に入ることなく、開発チームが好きな時にリリースしている
  6. 取り組み①検証時にSREがボトルネックにならない運用 17 当初は、検証環境と本番環境が同じAWSアカウント上に。 開発チーム 検証のために Route53の設定を 変更してほしいな SREチーム OK! でも忙しいから少し

    時間ください・・・ 開発チーム いつ変更される かな・・・ 開発チームに必要な操作権限がなく、 検証が開発チーム内で完結せず、時間がかかってしまう
  7. 取り組み②自分専用の使い捨て環境の構築 20 当初は検証用の環境が1つしかなかった 開発チーム このコードAWS上 で動かして確認し たい 開発チーム 今って 検証環境誰も使って

    ないかな 開発チーム では、今から僕が 占有します 検証環境の使用タイミングの調整や待ちが発生していて開発効率が低下
  8. 23 Appは 開発チーム内で 自由に 本番リリース可 検証は 開発チーム内で 自由に AWSリソース の構築可

    検証用に 開発チーム内で 自分専用の環境 の構築可 残るは開発・本番へのAWSリソースの構築 もちろんSREが介入せずに開発チーム内で構築できます!!