Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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