Kubernetesを初めて触った時に混乱したPDBやStatefulSet 今なら5分で明快に説明できると思うんだ

8.8K Views

November 28, 24

スライド概要

11/28~11/29に開催された「CloudNative Days Winter 2024」 の発表資料です
#CNDW2024

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Kubernetesを 初めて触った時に混乱した PDBやStatefulSet 今なら5分で明快に 説明できると思うんだ びきニキ @BkNkbot 2024.11.28 CloudNative Days Winter 2024

2.

# お前誰よ びきニキ @BkNkbot 📦 サイボウズ株式会社 🐈⬛ クラウド基盤本部 PDX(Platform Developer eXperience) 🐈⬛ 福岡在住の新卒1年目 🐈⬛ 最近はGitHub Actionsをひたすら書いている

3.

7月

4.

チーム配属後初のタスク

5.

アップデートなどの影響で 突然Podから追い出される v 可能性を下げる取り組みやろう 弊チームの人

6.

v よし、やります!

7.

v 📃

8.

PDB…? Drain…? v Deployment …? StatefulSet …? サイドカーコンテナ…?

9.

v 🤯

10.

ドキュメントを読むが Kubernetesの用語に v 打ちのめされる私

11.

何がそもそも問題で これがあると何が嬉しくて v どう影響するんだ…?

12.

今なら5分で説明できる

13.

※ なおここまで1分

14.

# StatefulSetとは? 💡 Podと永続ボリュームのセット 💡 通常のDeploymentやReplicaSetは、 Podが使い捨てで動的に生成される 💡 StatefulSetはPodのデータ保持ができる 💡PodのIDやストレージを一意で固定する

15.

# StatefulSetのうれしい特徴 Pod識別が可能: 一意の名前が付与される 再スケジュールされても、同じ名前でPodを再作成 順序を保証: Podの起動・削除が順序立てて行われる 永続的なデータの保持: Podが削除されてもデータは失われない

16.

# StatefulSetとは?

17.

# StatefulSetとは? https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

18.

# StatefulSetとは? https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

19.

# StatefulSetとは?

20.

# StatefulSetとは?

21.

# StatefulSetとは?

22.

# StatefulSetとは?

23.

# StatefulSetのできること、できないこと 🙆 Podの順序や状態の管理ができる

24.

# StatefulSetのできること、できないこと 🙆 Podの順序や状態の管理ができる 🖐 稼働しているPod数を保証できない

25.

# StatefulSetのできること、できないこと 🙆 Podの順序や状態の管理ができる 🖐 稼働しているPod数を保証できない 🤔 StatefulSetだけでは稼働に必要な 最低限のPod数が維持できないので サービスがダウンする可能性がある

26.

# PDB(Pod Disruption Budget)とは? 🪣 Podの可用性を管理するための仕組み 🪣 最小限稼働すべきPodの数 or 割合を指定し、 アプリケーションの可用性を確保

27.

# PDB(Pod Disruption Budget)とは? 🪣 Podの可用性を管理するための仕組み 🪣 最小限稼働すべきPodの数 or 割合を指定し、 アプリケーションの可用性を確保 ❤ メンテナンスやアップデートといった 「計画的な中断」が発生した際に 同時停止するPodの数を制限できて嬉しい

28.

# PDB(Pod Disruption Budget)とは? 🪣 Podの可用性を管理するための仕組み 🪣 最小限稼働すべきPodの数 or 割合を指定し、 アプリケーションの可用性を確保 ❤ メンテナンスやアップデートといった 「計画的な中断」が発生した際に 同時停止するPodの数を制限できて嬉しい

29.

# 「計画的な中断」って? 🤯 Involuntary disruptions: ハードウェアの故障・リソース不足・ カーネルパニックなど回避できないもの ♻ Voluntary disruptions: 修理やアップグレードのためのPod移動 事前に計画されている更新、削除、再起動

30.

# 「計画的な中断」って? 🤯 Involuntary disruptions: ハードウェアの故障・リソース不足・ PDBが関与できる中断 カーネルパニックなど回避できないもの ♻ Voluntary disruptions: 修理やアップグレードのためのPod移動 事前に計画されている更新、削除、再起動

31.

# PDB(Pod Disruption Budget)とは? 図解

32.

# PDB(Pod Disruption Budget)とは? 図解

33.

# PDB(Pod Disruption Budget)とは? 図解

34.

# PDB(Pod Disruption Budget)とは? 図解

35.

# PDB(Pod Disruption Budget)とは? 図解

36.

# PDB(Pod Disruption Budget)とは? 図解

37.

# PDB(Pod Disruption Budget)とは? 図解

38.

# 実際の使用例 ※ maxUnavailable(利用不可能となる最大のPod 数)でも指定可能 個数だけでなくパーセントで指定することもできる

39.

# PDB(Pod Disruption Budget)とは? 図解

40.

# PDB(Pod Disruption Budget)とは? 図解

41.

# PDB(Pod Disruption Budget)とは? 図解

42.

# PDB(Pod Disruption Budget)とは? 図解

43.

# まとめ ❤ StatefulSet: Podと永続ボリュームのセット → 識別できる・データが残る・起動順序保証 ❤ PDB: 中断する数を保証 → 事前計画の更新、削除、再起動で影響を出さない

44.

# 何が私の混乱・躓きポイントだったのか 🤯 そもそも:基本概念を正しく理解していなかった… 🤯 単語の関係性、位置関係が不明瞭 🤯 似ている概念と理解がゴチャゴチャになる → ReplicaSet, Deployment, DaemonSet など 🤯 手を動かして理解ではなく、 説明だけで理解し、そのあと手を動かそうとしていた

45.

# → 関係性、違いを意識して学ぶ 🤯 そもそも:基本概念を正しく理解していなかった… 🤯 単語の関係性、位置関係が不明瞭 🤯 似ている概念と理解がゴチャゴチャになる → ReplicaSet, Deployment, DaemonSet など 🤯 手を動かして理解ではなく、 説明だけで理解し、そのあと手を動かそうとしていた

46.

# LT作成でわかったこと 🧐 関連用語との「違い」を意識すると良い 🧐 最初は似たようなものに見えていた

47.

# LT作成でわかったこと 🧐 関連用語との「違い」を意識すると良い 🧐 最初は似たようなものに見えていた 💜 私の場合は「図で理解するタイプ」かもしれない 💜 関係性がわからず躓いた →「プレマップ&ポストマップ」で関係を明確に

48.

# まだまだ勉強中 よければ「自分なりの」 勉強のやりかたを 教えてください〜〜〜!!

49.

# まだまだ勉強中 よければ「自分なりの」 勉強のやりかたを 教えてください〜〜〜!! おわり