日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何对K8s进行考核?Kuberhealthy来打个样!

發(fā)布時(shí)間:2024/1/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何对K8s进行考核?Kuberhealthy来打个样! 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019年11月,在圣地亞哥KubeCon,我們發(fā)布了kuberhealth 2.0.0——將kuberhealthy作為合成監(jiān)測的Kubernetes operator。這個(gè)新功能為開發(fā)人員提供了創(chuàng)建自己的kuberhealth檢查容器的方法,以合成監(jiān)控其應(yīng)用程序和集群。社區(qū)很快采用了這個(gè)新特性,感謝在自己的集群中實(shí)現(xiàn)和測試kuberhealth 2.0.0的每個(gè)人。

1部署Kuberhealthy

要安裝Kuberhealthy,請(qǐng)確保安裝了Helm?3。如果沒有,可以使用此部署文件夾中生成的flat spec文件。如果不使用Prometheus Operator,可以用kuberhealthy- Prometheus.yaml。如果您根本沒有使用Prometheus,那么您仍然可以使用kuberhealthy和JSON狀態(tài)頁以及/或InfluxDB集成,使用此規(guī)范。

2使用Helm 3安裝

  • 在所需的Kubernetes集群/上下文中創(chuàng)建命名空間“kuberhealthy”:

  • kubectl create namespace kuberhealthy

    2.將當(dāng)前命名空間設(shè)置為“kuberhealthy”:

    kubectl?config?set-context?--current?--namespace=kuberhealthy



    3.將kuberhealthy repo添加到Helm:

    helm repo add kuberhealthy?https://comcast.github.io/kuberhealthy/helm-repos

  • 根據(jù)Prometheus實(shí)現(xiàn),為集群選擇適當(dāng)?shù)拿畎惭bkuberhealthy:

  • 如果使用 Prometheus Operator:

    helm?install?kuberhealthy?kuberhealthy/kuberhealthy?--set?prometheus.enabled=true,prometheus.enableAlerting=true,prometheus.enableScraping=true,prometheus.serviceMonitor=true?



    如果使用Prometheus, 但不是Prometheus Operator:

    helm?install?kuberhealthy?kuberhealthy/kuberhealthy?--set?prometheus.enabled=true,prometheus.enableAlerting=true,prometheus.enableScraping=true



    有關(guān)配置scrape注釋的更多細(xì)節(jié),請(qǐng)參閱下面Prometheus Integration details一節(jié)。

    最后,如果你不使用Prometheus:

    helm?install?kuberhealthy?kuberhealthy/kuberhealthy



    運(yùn)行Helm命令將自動(dòng)安裝Kuberhealthy(v2.2.0)的最新版本,并進(jìn)行一些基本檢查。如果運(yùn)行kubectl get pods,應(yīng)該會(huì)看到兩個(gè)kuberhealth pods。這些是創(chuàng)建、協(xié)調(diào)和跟蹤測試pod的pod。這兩個(gè)Kuberhealthy pods還提供JSON狀態(tài)頁和a/metrics端點(diǎn)。您看到創(chuàng)建的其他每個(gè)pod都是一個(gè)checker pod,設(shè)計(jì)用于執(zhí)行和關(guān)閉。

    3配置其他檢查

    接下來,可以運(yùn)行kubectl get khchecks。可以看到默認(rèn)安裝了三個(gè)Kuberhealthy檢查:

    ?daemonset: 部署并關(guān)閉一個(gè)daemonset,以確保群集中的所有節(jié)點(diǎn)都能正常工作。

    ?deployment:創(chuàng)建部署,然后觸發(fā)滾動(dòng)更新。測試部署是否可以通過服務(wù)訪問,然后刪除所有內(nèi)容。過程中的任何問題都會(huì)導(dǎo)致失敗。

    ?dn -status-internal:驗(yàn)證內(nèi)部集群DNS是否正常運(yùn)行。

    要查看其他可用的外部檢查,請(qǐng)查看外部檢查注冊(cè)表,找到可以應(yīng)用于集群啟用各種檢查的其他yaml文件。

    kuberhealthy 檢查pod應(yīng)該在kuberhealthy運(yùn)行后不久(1-2分鐘)開始運(yùn)行。另外,check-reaper cronjob每隔幾分鐘運(yùn)行一次,以確保一次不超過5個(gè)checker pods被丟棄。

    要獲取這些檢查的狀態(tài)頁視圖,需要通過編輯kuberhealthy服務(wù)并設(shè)置Type:LoadBalancer來對(duì)外公開kuberhealthy服務(wù),或者使用kubectl port-forward 服務(wù)/kuberhealthy 8080:80。查看時(shí),服務(wù)端點(diǎn)將顯示一個(gè)JSON狀態(tài)頁,如下所示:
    ?

    { "OK":?true, "Errors":?[], "CheckDetails":?{"kuberhealthy/daemonset":?{"OK":?true,"Errors":?[],"RunDuration":?"22.512278967s","Namespace":?"kuberhealthy","LastRun":?"2020-04-06T23:20:31.7176964Z","AuthoritativePod":?"kuberhealthy-67bf8c4686-mbl2j","uuid":?"9abd3ec0-b82f-44f0-b8a7-fa6709f759cd"},"kuberhealthy/deployment":?{"OK":?true,"Errors":?[],"RunDuration":?"29.142295647s","Namespace":?"kuberhealthy","LastRun":?"2020-04-06T23:20:31.7176964Z","AuthoritativePod":?"kuberhealthy-67bf8c4686-mbl2j","uuid":?"5f0d2765-60c9-47e8-b2c9-8bc6e61727b2"},"kuberhealthy/dns-status-internal":?{"OK":?true,"Errors":?[],"RunDuration":?"2.43940936s","Namespace":?"kuberhealthy","LastRun":?"2020-04-06T23:20:44.6294547Z","AuthoritativePod":?"kuberhealthy-67bf8c4686-mbl2j","uuid":?"c85f95cb-87e2-4ff5-b513-e02b3d25973a"} }, "CurrentMaster":?"kuberhealthy-7cf79bdc86-m78qr"

    }

    JSON頁面顯示集群中運(yùn)行的所有kuberhealth檢查。要在不同命名空間運(yùn)行Kuberhealthy檢查,可以通過在狀態(tài)頁URL中添加GET變量名稱空間參數(shù):?namespace=kuberhealth,kube-system來過濾它們。

    這個(gè)JSON頁面顯示在你的集群中運(yùn)行的所有kuberhealthy檢查。如果你在不同的名稱空間中運(yùn)行Kuberhealthy檢查,你可以通過在狀態(tài)頁面URL中添加GET變量namespace參數(shù):?namespace=kuberhealthy,kube-system來過濾它們。

    4Writing Your Own Checks

    Kuberhealthy被設(shè)計(jì)為擴(kuò)展自定義檢查容器,任何人都可以編寫容器來檢查任何內(nèi)容。這些檢查可以用任何語言編寫,只要它們打包在容器中。這使得Kuberhealthy成為創(chuàng)建自己的合成監(jiān)測的優(yōu)秀平臺(tái)!

    創(chuàng)建自己的檢查是驗(yàn)證client library、模擬真實(shí)的用戶工作流程,以及在服務(wù)或系統(tǒng)正常運(yùn)行時(shí)創(chuàng)建高度信任的好方法。

    5Prometheus集成細(xì)節(jié)

    當(dāng)啟用Prometheus時(shí),Kuberhealthy服務(wù)將添加以下注釋:

    prometheus.io/path:?/metrics prometheus.io/port:?"80" prometheus.io/scrape:?"true"



    在prometheus配置中,添加以下示例scrape_config,該配置通過添加的prometheus注釋來獲取kuberhealthy服務(wù):

    -?job_name:'kuberhealthy'scrape_interval:1m?honor_labels:true?metrics_path:/metrics?kubernetes_sd_configs:?
    • role:service namespaces: names: - kuberhealthy relabel_configs:
      • source_labels:[__meta_kubernetes_service_annotation_prometheus_io_scrape] action:keep regex:true}}}

    還可以使用這個(gè)示例作業(yè)指定要刮除的目標(biāo)端點(diǎn): {{{-?job_name:kuberhealthy scrape_interval:1m honor_labels:true? metrics_path:/metrics? static_configs:? -?targets:? ??-?kuberhealthy.kuberhealthy.svc.cluster.local:80

    應(yīng)用了適當(dāng)?shù)膒rometheus配置,能夠看到以下kuberhealthy指標(biāo):

    ?kuberhealthy_check

    ?kuberhealthy_check_duration_seconds

    ?kuberhealthy_cluster_states

    ?kuberhealthy_running

    6創(chuàng)建關(guān)鍵績效指標(biāo)

    使用這些Kuberhealthy度量,團(tuán)隊(duì)能夠收集基于以下定義、計(jì)算和PromQL查詢的kpi。

    可用性

    我們將可用性定義為K8s集群控制平面按預(yù)期啟動(dòng)和運(yùn)行。這是通過在一段時(shí)間內(nèi)創(chuàng)建部署、執(zhí)行滾動(dòng)更新和刪除部署的能力來衡量的。通過測量Kuberhealthy的部署檢查成敗來計(jì)算這一點(diǎn)。

    ?Availability = Uptime / (Uptime * Downtime)

    ?Uptime = Number of Deployment Check Passes * Check Run Interval

    ?Downtime = Number of Deployment Check Fails * Check Run Interval

    ?Check Run Interval = how often the check runs (runInterval set in your KuberhealthyCheck Spec)

    ?PromQL Query (Availability % over the past 30 days):

    1 - (sum(count_over_time(kuberhealthy_check{check="kuberhealthy/deployment", status="0"}[30d])) OR vector(0))/(sum(count_over_time(kuberhealthy_check{check="kuberhealthy/deployment", status="1"}[30d])) * 100)

    利用率

    我們將利用率定義為用戶對(duì)產(chǎn)品(k8s)及其資源(pod、服務(wù)等)的接受程度。通過客戶使用了多少節(jié)點(diǎn)、部署、有狀態(tài)集、持久卷、服務(wù)、pods和jobs來衡量。通過計(jì)算節(jié)點(diǎn)、部署、有狀態(tài)集、持久卷、服務(wù)、pods和jobs的總數(shù)來計(jì)算。

    持續(xù)時(shí)間(延遲)

    持續(xù)時(shí)間定義為控制平面的容量和吞吐量的利用率。通過捕獲kuberhealthy部署檢查運(yùn)行的平均運(yùn)行持續(xù)時(shí)間來計(jì)算。

    PromQL查詢(部署檢查平均運(yùn)行持續(xù)時(shí)間):

    avg(kuberhealthy_check_duration_seconds{check="kuberhealthy/deployment"})

    錯(cuò)誤/警報(bào)

    我們將錯(cuò)誤定義為所有k8s集群和Kuberhealthy相關(guān)警報(bào)。每次Kuberhealthy檢查失敗,都會(huì)收到失敗的警報(bào)。

    原文地址:

    https://kubernetes.io/blog/202 ... lthy/

    總結(jié)

    以上是生活随笔為你收集整理的如何对K8s进行考核?Kuberhealthy来打个样!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。