Slide 1

Slide 1 text

Prometheus monitoring from outside of Kubernetes
 〜どうして我々はKubernetes上のPrometheusを破壊したのか〜 株式会社サイバーエージェント 技術本部 プライベートクラウドグループ
 Nakanishi Kento @whywaita Prometheus Tokyo Meetup #2 !1

Slide 2

Slide 2 text

Nakanishi Kento / whywaita • 株式会社サイバーエージェント 技術本部
 プライベートクラウドグループ 開発チーム • 2019年年新卒⼊入社 (⼊入社して2ヶ⽉月経ちました) • 仕事: OpenStack / Kubernetes ベースの
 プライベートクラウドのお守り, 新機能の開発 • 趣味: ⾃自宅サーバ / ⾃自宅インフラ, アニソン 最近趣味で我が家とAS59105がBGPで繋がりました !2

Slide 3

Slide 3 text

1.最初のPrometheus 2.破滅、突然に 3.そして未来へ…… !3

Slide 4

Slide 4 text

最初のPrometheus !4

Slide 5

Slide 5 text

Prometheus Tokyo Meetupですが
 皆さんPrometheus運⽤用してますか? !5

Slide 6

Slide 6 text

Prometheus Tokyo Meetupですが
 皆さんどこで運⽤用してますか? !6

Slide 7

Slide 7 text

【緊急アンケート】Prometheusどこに置いてますか? •Kubernetesの上にPodとして •EC2 / GCEなどVMの上にプロセスとして •タンスの上に良い感じに •その他 !7

Slide 8

Slide 8 text

(結果は⾒見見てないけど)
 やはり皆さんKubernetesの上ですね! !8

Slide 9

Slide 9 text

我々のチームもそんな感じ !9

Slide 10

Slide 10 text

我々のチームもそんな感じでした… !10

Slide 11

Slide 11 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ !11

Slide 12

Slide 12 text

必要なものと⾔言えば? !12

Slide 13

Slide 13 text

Persistent Volumeですよね! !13

Slide 14

Slide 14 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ !14

Slide 15

Slide 15 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 !15

Slide 16

Slide 16 text

Prometheusをk8sの上に置くと嬉しい •k8s_sd_config がバリバリ動く •TLS証明書周りは⾃自動的に良い感じに更更新 •クラスタエンドポイント設定不不要 •ClusterIPなどにそのままアクセス可 !16

Slide 17

Slide 17 text

最⾼高じゃん!!!!😊😊😊 !17

Slide 18

Slide 18 text

最⾼高の⽇日々を過ごしていた !18

Slide 19

Slide 19 text

破滅、突然に !19

Slide 20

Slide 20 text

が………… !20

Slide 21

Slide 21 text

免責事項 •ここからの話は開発環境で⾏行行われたものです •本番ではここからの話と同様のものは起きていません •説明簡易易化のため実際の挙動とは若⼲干違う説明をします !21

Slide 22

Slide 22 text

ある⽇日 !22

Slide 23

Slide 23 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 !23

Slide 24

Slide 24 text

「メンテしますね〜」
 『は〜い!』 !24

Slide 25

Slide 25 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !25

Slide 26

Slide 26 text

カチャカチャカチャ…… !26

Slide 27

Slide 27 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !27

Slide 28

Slide 28 text

「…ん?」 !28

Slide 29

Slide 29 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !29

Slide 30

Slide 30 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !30

Slide 31

Slide 31 text

「…あ!!!!」 !31

Slide 32

Slide 32 text

🔥🔥障害発⽣生🔥🔥 !32

Slide 33

Slide 33 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !33

Slide 34

Slide 34 text

• 普段のetcd クラスタ台数は5台 • メンテナンスで -2台 • 障害で更更に -1台 あとは分かるな…? !34

Slide 35

Slide 35 text

🔥etcdクラスタ崩壊🔥 !35

Slide 36

Slide 36 text

🔥Kubernetesクラスタ崩壊🔥 !36

Slide 37

Slide 37 text

😱😱😱 !37

Slide 38

Slide 38 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !38

Slide 39

Slide 39 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !39

Slide 40

Slide 40 text

つまり !40

Slide 41

Slide 41 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !41

Slide 42

Slide 42 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !42

Slide 43

Slide 43 text

🔥Cephも死亡🔥 !43

Slide 44

Slide 44 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !44

Slide 45

Slide 45 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !45

Slide 46

Slide 46 text

🔥PVC提供も失敗🔥 !46

Slide 47

Slide 47 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !47

Slide 48

Slide 48 text

ざっくり図 (on Private Cloud) m01 物理理 k8s-worker(s) etcd m02 m03 m04 m05 etcd etcd etcd etcd コンテナ PVC ストレージ
 アプライアンス リクエスト pvc-prom 提供 メンテナンス !48

Slide 49

Slide 49 text

🔥Prometheusも無事死亡🔥 !49

Slide 50

Slide 50 text

🔥アラート発砲できず🔥 !50

Slide 51

Slide 51 text

🔥🔥🔥🔥🔥🔥🔥🔥 !51

Slide 52

Slide 52 text

復復旧は淡々と⾏行行われた… •etcdクラスタ復復旧 •ちゃんと設定を⼊入れるとスッと直って優秀! •kube masterクラスタ復復旧 •Cephクラスタ復復旧 •3台⽬目を急遽差し込みブートストラップ •PVC提供再開 •Prometheus含め完全復復旧! !52

Slide 53

Slide 53 text

😥 !53

Slide 54

Slide 54 text

こうして我々はPrometheusを
 Kubernetesの外に置くことに…… !54

Slide 55

Slide 55 text

そして未来へ…… !55

Slide 56

Slide 56 text

【再掲】Prometheusをk8sの上に置くと嬉しい •k8s_sd_config がバリバリ動く •TLS証明書周りは⾃自動的に良い感じに更更新 •クラスタエンドポイント設定不不要 •ClusterIPなどにそのままアクセス可 !56

Slide 57

Slide 57 text

では外に置くときは? !57

Slide 58

Slide 58 text

Prometheusをk8sの外から監視するときは • k8s_sd_config がバリバリ動くかもしれない • TLS証明書周りは⾃自動的に良い感じに更更新されない • しっかり更更新する仕組みを⼊入れましょう • クラスタエンドポイント設定不不要必要 • しっかり設定しましょう • ClusterIPなどにそのままアクセス可不不可 • しっかりプロキシするルールを書きましょう !58

Slide 59

Slide 59 text

Kubernetes APIアクセス⽤用証明書の設定 •Prometheusを動作させているVMに配置 •/etc/prometheus/ca.pem などファイルシステム直置き •監視 / アラートルールをansibleで管理理しているため、
 証明書も同じタイミングで適⽤用する運⽤用 •定期的に流さないといけないのでもうちょっと
 良い⽅方法があればそちらにしたい…… !59

Slide 60

Slide 60 text

クラスタエンドポイントの設定 •kubernetes_sd_config の api_server で設定可能 •弊社の場合はansibleのjinja2で本番 / 開発を切替 •APIエンドポイント向けの証明書とPodアクセス向けの TLS証明書は切替可能なので適宜やってください!! !60

Slide 61

Slide 61 text

クラスタエンドポイントの設定 !61

Slide 62

Slide 62 text

Podへの監視プロキシの設定 •NodePortがあるものはKubernetesのプロキシ • /api/v1/nodes/${node名}/proxy/metrics •Serviceがあるものはrelabel_configを駆使して頑張る!! •blackbox_exporterは •__address__ をblackboxが動作している所に書き換え •__param_target を監視先に書き換え !62

Slide 63

Slide 63 text

今はk8s上とVM上の並⾏行行運⽤用中
 (統合タスクが進⾏行行中) !63

Slide 64

Slide 64 text

まとめ • Kubernetesは意外と壊れる • 監視のためのプロセスが⼀一緒に壊れたら破滅する • ストレージってやっぱり⼤大変 • PrometheusはKubernetesの外からでもちゃんと監視
 できます!!!! • もっと良いソリューションあれば懇親会で教えて
 ください!!! !64

Slide 65

Slide 65 text

ありがとうございました
 Thank you!!! !65