talked by Prometheus Tokyo Meetup #2 https://prometheus.connpass.com/event/127574/
Original: https://www.slideshare.net/whywaita/prometheus-monitoring-from-outside-of-kubernetes-kubernetesprometheus-prometheustokyo
This slide is re-upload by the author.
Prometheus monitoringfrom outside of Kubernetes 〜どうして我々はKubernetes上のPrometheusを破壊したのか〜株式会社サイバーエージェント 技術本部 プライベートクラウドグループ Nakanishi Kento @whywaitaPrometheus Tokyo Meetup #2!1
View Slide
Nakanishi Kento / whywaita• 株式会社サイバーエージェント 技術本部 プライベートクラウドグループ 開発チーム• 2019年年新卒⼊入社 (⼊入社して2ヶ⽉月経ちました)• 仕事: OpenStack / Kubernetes ベースの プライベートクラウドのお守り, 新機能の開発• 趣味: ⾃自宅サーバ / ⾃自宅インフラ, アニソン最近趣味で我が家とAS59105がBGPで繋がりました!2
1.最初のPrometheus2.破滅、突然に3.そして未来へ……!3
最初のPrometheus!4
Prometheus Tokyo Meetupですが 皆さんPrometheus運⽤用してますか?!5
Prometheus Tokyo Meetupですが 皆さんどこで運⽤用してますか?!6
【緊急アンケート】Prometheusどこに置いてますか?•Kubernetesの上にPodとして•EC2 / GCEなどVMの上にプロセスとして•タンスの上に良い感じに•その他!7
(結果は⾒見見てないけど) やはり皆さんKubernetesの上ですね!!8
我々のチームもそんな感じ!9
我々のチームもそんな感じでした…!10
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナ!11
必要なものと⾔言えば?!12
Persistent Volumeですよね!!13
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナ!14
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供!15
Prometheusをk8sの上に置くと嬉しい•k8s_sd_config がバリバリ動く•TLS証明書周りは⾃自動的に良い感じに更更新•クラスタエンドポイント設定不不要•ClusterIPなどにそのままアクセス可!16
最⾼高じゃん!!!!😊😊😊!17
最⾼高の⽇日々を過ごしていた!18
破滅、突然に!19
が…………!20
免責事項•ここからの話は開発環境で⾏行行われたものです•本番ではここからの話と同様のものは起きていません•説明簡易易化のため実際の挙動とは若⼲干違う説明をします!21
ある⽇日!22
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供!23
「メンテしますね〜」 『は〜い!』!24
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!25
カチャカチャカチャ……!26
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!27
「…ん?」!28
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!29
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!30
「…あ!!!!」!31
🔥🔥障害発⽣生🔥🔥!32
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!33
• 普段のetcd クラスタ台数は5台• メンテナンスで -2台• 障害で更更に -1台あとは分かるな…?!34
🔥etcdクラスタ崩壊🔥!35
🔥Kubernetesクラスタ崩壊🔥!36
😱😱😱!37
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!38
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!39
つまり!40
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!41
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!42
🔥Cephも死亡🔥!43
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!44
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!45
🔥PVC提供も失敗🔥!46
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!47
ざっくり図 (on Private Cloud)m01物理理 k8s-worker(s)etcdm02 m03 m04 m05etcd etcdetcdetcdコンテナPVCストレージ アプライアンスリクエストpvc-prom提供メンテナンス!48
🔥Prometheusも無事死亡🔥!49
🔥アラート発砲できず🔥!50
🔥🔥🔥🔥🔥🔥🔥🔥!51
復復旧は淡々と⾏行行われた…•etcdクラスタ復復旧•ちゃんと設定を⼊入れるとスッと直って優秀!•kube masterクラスタ復復旧•Cephクラスタ復復旧•3台⽬目を急遽差し込みブートストラップ•PVC提供再開•Prometheus含め完全復復旧!!52
😥!53
こうして我々はPrometheusを Kubernetesの外に置くことに……!54
そして未来へ……!55
【再掲】Prometheusをk8sの上に置くと嬉しい•k8s_sd_config がバリバリ動く•TLS証明書周りは⾃自動的に良い感じに更更新•クラスタエンドポイント設定不不要•ClusterIPなどにそのままアクセス可!56
では外に置くときは?!57
Prometheusをk8sの外から監視するときは• k8s_sd_config がバリバリ動くかもしれない• TLS証明書周りは⾃自動的に良い感じに更更新されない• しっかり更更新する仕組みを⼊入れましょう• クラスタエンドポイント設定不不要必要• しっかり設定しましょう• ClusterIPなどにそのままアクセス可不不可• しっかりプロキシするルールを書きましょう!58
Kubernetes APIアクセス⽤用証明書の設定•Prometheusを動作させているVMに配置•/etc/prometheus/ca.pem などファイルシステム直置き•監視 / アラートルールをansibleで管理理しているため、 証明書も同じタイミングで適⽤用する運⽤用•定期的に流さないといけないのでもうちょっと 良い⽅方法があればそちらにしたい……!59
クラスタエンドポイントの設定•kubernetes_sd_config の api_server で設定可能•弊社の場合はansibleのjinja2で本番 / 開発を切替•APIエンドポイント向けの証明書とPodアクセス向けのTLS証明書は切替可能なので適宜やってください!!!60
クラスタエンドポイントの設定!61
Podへの監視プロキシの設定•NodePortがあるものはKubernetesのプロキシ• /api/v1/nodes/${node名}/proxy/metrics•Serviceがあるものはrelabel_configを駆使して頑張る!!•blackbox_exporterは•__address__ をblackboxが動作している所に書き換え•__param_target を監視先に書き換え!62
今はk8s上とVM上の並⾏行行運⽤用中 (統合タスクが進⾏行行中)!63
まとめ• Kubernetesは意外と壊れる• 監視のためのプロセスが⼀一緒に壊れたら破滅する• ストレージってやっぱり⼤大変• PrometheusはKubernetesの外からでもちゃんと監視 できます!!!!• もっと良いソリューションあれば懇親会で教えて ください!!!!64
ありがとうございました Thank you!!!!65