巧用 Prometheus 监控 Kubernetes 集群所有组件的证书
KubeSphere 雖然提供了運維友好的向導式操作界面,簡化了 Kubernetes 的運維操作,但它還是建立在底層 Kubernetes 之上的,Kubernetes 默認的證書有效期都是一年,即使使用 KubeKey[1] 這樣的集群安裝利器也不能改變這個結果。如果不想辦法對 Kubernetes 各個組件的證書有效期進行監控,說不定哪天就會掉進坑里。
有部分讀者可能聽說過 ssl-exporter[2] 這個項目,它能提供多種針對 SSL 的檢測手段,包括:HTTPS 證書、文件證書、Kubernetes Secret、Kubeconfig 文件。從功能上來看,它基本可以滿足上述需求,但它的指標還不夠豐富,本文將介紹一個更為強大的 Prometheus Exporter:x509-certificate-exporter[3]。
與 ssl-exporter 不同,x509-certificate-exporter 只專注于監控 Kubernetes 集群相關的證書,包括各個組件的文件證書、Kubernetes TLS Secret、Kubeconfig 文件,而且指標更加豐富。我們來看看在 KubeSphere 中如何部署 x509-certificate-exporter 以監控集群的所有證書。
準備 KubeSphere 應用模板
KubeSphere[4] 集成了 OpenPitrix[5] 來提供應用程序全生命周期管理,OpenPitrix 是一個多云應用管理平臺,KubeSphere 利用它實現了應用商店和應用模板,以可視化的方式部署并管理應用。對于應用商店中不存在的應用,用戶可以將 Helm Chart 交付至 KubeSphere 的公共倉庫,或者導入私有應用倉庫來提供應用模板。
本教程將使用 KubeSphere 的應用模板來部署 x509-certificate-exporter。
要想從應用模板部署應用,需要創建一個企業空間、一個項目和兩個用戶帳戶(ws-admin 和 project-regular)。ws-admin 必須被授予企業空間中的 workspace-admin 角色, project-regular 必須被授予項目中的 operator 角色。有關更多信息,請參考創建企業空間、項目、帳戶和角色[6]。
創建項目
在此步驟中,您需要使用在上一步驟中創建的帳戶 ws-admin 來創建項目。KubeSphere 中的項目與 Kubernetes 中的命名空間相同,為資源提供了虛擬隔離。有關更多信息,請參見命名空間[7]。
以 ws-admin 身份登錄 KubeSphere,在項目管理中,點擊創建。
輸入項目名稱(例如 exporter),然后點擊確定完成,您還可以為項目添加別名和描述。
在項目管理中,點擊剛創建的項目查看其詳細信息。
邀請 project-regular 至該項目,并授予該用戶 operator 角色。請參考下圖以了解具體步驟。
具有 operator 角色的用戶是項目維護者,可以管理項目中除用戶和角色以外的資源。
添加應用倉庫
以 ws-admin 用戶登錄 KubeSphere 的 Web 控制臺。在您的企業空間中,進入應用管理下的應用倉庫頁面,并點擊添加倉庫。
在彈出的對話框中,將應用倉庫名稱設置為 enix,將應用倉庫的 URL 設置為 https://charts.enix.io,點擊驗證對 URL 進行驗證,再點擊確定進入下一步。
應用倉庫導入成功后會顯示在如下圖所示的列表中。
部署 x509-certificate-exporter
導入 x509-certificate-exporter 的應用倉庫后,就可以通過應用模板來部署 x509-certificate-exporter 了。
登出 KubeSphere 并以 project-regular 用戶重新登錄。在您的項目中,進入應用負載下的應用頁面,再點擊部署新應用。
在彈出的對話框中選擇來自應用模板。
在彈出的對話框中選擇來自應用模板。
來自應用商店:選擇內置的應用和以 Helm Chart 形式單獨上傳的應用。
來自應用模板:從私有應用倉庫和企業空間應用池選擇應用。
從下拉列表中選擇之前添加的私有應用倉庫 enix。
選擇 x509-certificate-exporter 進行部署。
您可以查看應用信息和配置文件,在版本下拉列表中選擇版本,然后點擊部署。
設置應用名稱,確認應用版本和部署位置,點擊下一步。
接下來進入應用配置頁面。
這里需要手動編輯配置清單,指定證書文件的路徑。
??daemonSets:master:nodeSelector:node-role.kubernetes.io/master:?''tolerations:-?effect:?NoSchedulekey:?node-role.kubernetes.io/masteroperator:?ExistswatchFiles:-?/var/lib/kubelet/pki/kubelet-client-current.pem-?/etc/kubernetes/pki/apiserver.crt-?/etc/kubernetes/pki/apiserver-kubelet-client.crt-?/etc/kubernetes/pki/ca.crt-?/etc/kubernetes/pki/front-proxy-ca.crt-?/etc/kubernetes/pki/front-proxy-client.crtwatchKubeconfFiles:-?/etc/kubernetes/admin.conf-?/etc/kubernetes/controller-manager.conf-?/etc/kubernetes/scheduler.confnodes:tolerations:-?effect:?NoSchedulekey:?node-role.kubernetes.io/ingressoperator:?ExistswatchFiles:-?/var/lib/kubelet/pki/kubelet-client-current.pem-?/etc/kubernetes/pki/ca.crt該配置會創建兩個 DaemonSet,master 運行在控制節點,nodes 運行在計算節點。
$?kubectl?-n?exporter?get?dsNAME????????????????????????????????????DESIRED???CURRENT???READY???UP-TO-DATE???AVAILABLE???NODE?SELECTOR?????????????????????AGE x509-x509-certificate-exporter-master???1?????????1?????????1???????1????????????1???????????node-role.kubernetes.io/master=???3d14h x509-x509-certificate-exporter-nodes????3?????????3?????????3???????3????????????3???????????<none>????????????????????????????3d14h參數解釋:
watchFiles : 證書文件所在的路徑。
watchKubeconfFiles : Kubeconfig 文件所在的路徑。
改完后的效果如圖所示。
點擊部署,等待應用創建完成并開始運行。
接入監控系統
通過應用模板部署完成后,除了會創建兩個 DaemonSet 之外,還會創建一個 ServiceMonitor。
$?kubectl?-n?exporter?get?servicemonitor NAME?????????????????????????????AGE x509-x509-certificate-exporter???3d15h打開 Prometheus 的 Web UI,可以看到相應的 Targets 已經在線。
x509-certificate-exporter 官方提供了一個 Grafana Dashboard[8],導入 Grafana 后的效果如圖:
各項指標一目了然,一般我們只需要關注已經過期的證書和即將過期的證書即可。假設我想查看證書還有多久失效,可以使用表達式 (x509_cert_not_after{filepath!=""} - time()) / 3600 / 24。
可以創建相應的告警規則,以便在證書即將過期時通知運維人員盡快更新證書。例如:
進入監控告警下的告警策略頁面,點擊創建。
填寫告警名稱,設置告警級別,點擊下一步。
選擇自定義規則,告警規則填入 (x509_cert_not_after{filepath!=""} - time()) / 3600 / 24 < 30。
點擊下一步,填寫標題和消息。
點擊創建,告警規則就創建完成了。
結語
事實上 KubeSphere 從 3.1 版本開始就內置了證書過期的告警策略,可以在告警策略頁面的內置策略中輸入 expir 進行搜索。
點進去可以看到具體的告警規則表達式。
告警規則表達式里面的指標是 API Server 組件自身暴露的指標,并沒有兼顧到整個集群所有組件的證書。想要全面監控所有組件的證書,建議結合 x509-certificate-exporter 在 KubeSphere 中添加自定義告警策略,從此不再為證書過期而煩惱。
腳注
[1]
KubeKey: https://github.com/kubesphere/kubekey
[2]ssl-exporter: https://github.com/ribbybibby/ssl_exporter
[3]x509-certificate-exporter: https://github.com/enix/x509-certificate-exporter
[4]KubeSphere: https://kubesphere.com.cn
[5]OpenPitrix: https://github.com/openpitrix/openpitrix
[6]創建企業空間、項目、帳戶和角色: https://kubesphere.io/zh/docs/quick-start/create-workspace-and-project/
[7]命名空間: https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/namespaces/
[8]Grafana Dashboard: https://grafana.com/grafana/dashboards/13922
KubeSphere 社區活動預告
“CIC 2021 云計算峰會”正式啟動啦!CIC 2021 是一場 Top 級行業盛會,將匯聚 800 家青云QingCloud 企業客戶信息化負責人,采取線上線下相結合的方式,與會規模將超過 10000 人。
大會的主題為“預見·數字自由”,將有技術大牛分享前沿成果,行業大咖帶來實戰經驗。本次大會除了主論壇,還設置了多個分論壇。KubeSphere Meetup 將作為其中一個分論壇,延續之前上海、杭州、成都三站的 “KubeSphere & Friends” 的主題,為大家帶來技術的交流和碰撞。
北京站目前已經開啟招募,若您希望獲取經驗,期待和各位極客交流,那就抓緊報名吧!位置有限,先到先得!
掃描下方圖中的二維碼進入到報名頁面,填寫個人信息,選擇 “KubeSphere & Friends 2021 Meetup - 北京站”,即可報名。
關于?KubeSphere
KubeSphere (https://kubesphere.io)是在 Kubernetes 之上構建的開源容器混合云,提供全棧的 IT 自動化運維的能力,簡化企業的 DevOps 工作流。
KubeSphere?已被?Aqara?智能家居、本來生活、新浪、華夏銀行、四川航空、國藥集團、微眾銀行、紫金保險、中通、中國人保壽險、中國太平保險、中移金科、Radore、ZaloPay?等海內外數千家企業采用。KubeSphere 提供了開發者友好的向導式操作界面和豐富的企業級功能,包括多云與多集群管理、Kubernetes?資源管理、DevOps?(CI/CD)、應用生命周期管理、微服務治理?(Service?Mesh)、多租戶管理、監控日志、告警通知、審計事件、存儲與網絡管理、GPU?support?等功能,幫助企業快速構建一個強大和功能豐富的容器云平臺。
???GitHub:https://github.com/kubesphere
??????官網(中國站):https://kubesphere.com.cn
????????????微信群:請搜索添加群助手微信號?kubesphere
總結
以上是生活随笔為你收集整理的巧用 Prometheus 监控 Kubernetes 集群所有组件的证书的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: all CUDA-capable dev
- 下一篇: 用数据解读摩羯智投