自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 Kubecost 和 Kyverno 對(duì)云原生工作負(fù)載進(jìn)行成本治理

譯文 精選
云計(jì)算 云原生
雖然云使我們的業(yè)務(wù)快速發(fā)展,讓服務(wù)也變得越來(lái)越敏捷,但這是有成本代價(jià)的。所有預(yù)分配的云資源,無(wú)論是過(guò)度使用還是未充分使用,都有與之相關(guān)的運(yùn)行成本。

譯者 | 王志軍

審校 | 孫淑娟 梁策

一、背景

當(dāng)前,大多數(shù)應(yīng)用程序都使用云基礎(chǔ)設(shè)施來(lái)托管。云基礎(chǔ)設(shè)施可以是AWS/GCP/Azure等公有云中可用的資源,也可以是以虛擬機(jī)(VM)和容器的形式運(yùn)行云工作負(fù)載的數(shù)據(jù)中心服務(wù)器等計(jì)算資源。

雖然云使我們的業(yè)務(wù)快速發(fā)展,讓服務(wù)也變得越來(lái)越敏捷,但這是有成本代價(jià)的。所有預(yù)分配的云資源,無(wú)論是過(guò)度使用還是未充分使用,都有與之相關(guān)的運(yùn)行成本。組織經(jīng)常面臨管理此類(lèi)成本的挑戰(zhàn),并需要主動(dòng)采取必要的措施。

解決與成本相關(guān)的挑戰(zhàn)的一種方法是設(shè)置一個(gè)固定的資源配額來(lái)限制資源的使用。另一種選擇是使用合適的工具(云或本地)定期統(tǒng)計(jì)所使用資源的運(yùn)行“總成本” 。

資源配額可能是一個(gè)簡(jiǎn)單的解決方案,但這種一刀切的方法并非對(duì)所有場(chǎng)景都適用。即使通過(guò)工具進(jìn)行成本識(shí)別也能很好地獲取與資源相關(guān)的成本信息,但無(wú)法擴(kuò)展到那些需要主動(dòng)行動(dòng)的不同場(chǎng)景中(即定義一個(gè)特定條件滿(mǎn)足的條件;采取行動(dòng),要么報(bào)告,要么糾正),,比如使用低代碼、閉環(huán)自動(dòng)化。

Nirmata DevSecOps平臺(tái)旨在全面解決這些挑戰(zhàn)。它是一個(gè)開(kāi)放且易于使用的平臺(tái),可在任何基礎(chǔ)設(shè)施上部署、運(yùn)行和優(yōu)化 Kubernetes 工作負(fù)載,實(shí)現(xiàn)自助服務(wù)、職責(zé)分離以及安全和治理控制。在這篇文章中,我們將使用Kyverno作為策略引擎,當(dāng) kubecost 統(tǒng)計(jì)的某個(gè) Kubernetes 工作負(fù)載的成本高于分配的值時(shí),它會(huì)報(bào)警。

二、Kubecost

Kubecost為使用 Kubernetes 的團(tuán)隊(duì)提供實(shí)時(shí)成本可視化和透視,幫助您不斷降低云成本。Kubecost解決了以下挑戰(zhàn):

1.成本分配:根據(jù) Kubernetes 資源劃分成本,包括部署、服務(wù)、 namespace 標(biāo)簽等。在單個(gè)視圖中或通過(guò)單個(gè) API Endpoint 查看多個(gè)集群的成本。

2.統(tǒng)一成本監(jiān)控:對(duì)Kubernetes的成本以及任何外部云服務(wù)或基礎(chǔ)設(shè)施的成本有一個(gè)全面了解。外部成本可以分?jǐn)偅缓髧@所有 Kubernetes以全面了解支出。

3.優(yōu)化洞察:透視哪些資源增加了成本,以及優(yōu)化這些資源的潛在方式。在不犧牲性能的情況下,獲取減少開(kāi)支的動(dòng)態(tài)建議。優(yōu)先考慮關(guān)鍵基礎(chǔ)設(shè)施或應(yīng)用程序更改,以提高資源效率和可靠性。

4.告警和治理:通過(guò)集成 PagerDuty 和 Slack 等工具來(lái)保持工程工作流。在成本超支和基礎(chǔ)設(shè)施中斷風(fēng)險(xiǎn)成為麻煩之前,快速發(fā)現(xiàn)這些風(fēng)險(xiǎn)并發(fā)出通知。

三、Kyverno策略引擎

Kyverno是一個(gè)開(kāi)源的Kubernetes 原生策略引擎,它作為準(zhǔn)入控制器運(yùn)行,可以根據(jù)可定制的策略驗(yàn)證、修改和生成任何配置數(shù)據(jù)。

盡管其他通用策略解決方案已針對(duì) Kubernetes 進(jìn)行了改造,但Kyverno是專(zhuān)為 Kubernetes 設(shè)計(jì)的。與 Kubernetes 一樣, Kyverno采用聲明式管理范式。Kyverno策略是 Kubernetes 的資源,不需要學(xué)習(xí)一門(mén)新語(yǔ)言。

Kyverno通過(guò)防止錯(cuò)誤配置和增強(qiáng)安全性來(lái)保護(hù) Kubernetes 配置。

四、Nirmata DevSecOps平臺(tái)

Nirmata DevSecOps平臺(tái) (NDP) 集成了所需的工具和流程,使企業(yè)能夠?qū)?Kubernetes 作為其云原生操作系統(tǒng)進(jìn)行標(biāo)準(zhǔn)化,從而為運(yùn)營(yíng)商、開(kāi)發(fā)人員和安全團(tuán)隊(duì)干凈地解耦工作流。

該平臺(tái)幫助企業(yè)運(yùn)營(yíng)團(tuán)隊(duì)為開(kāi)發(fā)人員提供自助服務(wù)的安全環(huán)境,解鎖DevOps的敏捷性。Nirmata Kubernetes平臺(tái)支持Kubecost作為認(rèn)證插件。

Nirmata開(kāi)發(fā)了CNCF開(kāi)源項(xiàng)目Kyverno,并在其DevSecOps平臺(tái)上原生支持該項(xiàng)目。Kyverno策略引擎是一個(gè)強(qiáng)大的工具,可以確保遵循安全性和操作最佳實(shí)踐。NDP將被用來(lái)部署Kubecost附加組件。

五、信息匯總

接下來(lái),我們將介紹集群策略如何利用Kyverno監(jiān)控Kubernetes namespace 的總運(yùn)行成本。當(dāng)總成本高于閾值時(shí), Kyverno會(huì)創(chuàng)建違規(guī)/失敗??偝杀拘畔⑹褂肒ubecost REST API 存儲(chǔ)在Config Map。我們將在下面詳細(xì)介紹這些組件。

首先,在各自的 namespace 中部署Kubecost和Kyverno。

出于演示的目的,我們將有一個(gè)名為 Nginx 的demo namespace 運(yùn)行 Nginx Web 服務(wù)器的副本。

Kubecost也可以使用Nirmata部署為附加組件 DevSecOps平臺(tái)(在這種情況下, Kubecost使用OpenEBS-hostpath存儲(chǔ)類(lèi)進(jìn)行動(dòng)態(tài)卷創(chuàng)建)。該鏈接包含在參考資料部分中。

六、Demo組件

所有相關(guān)文件都存放在Nirmata git repo。

1.收集腳本 – kubecost-collector.py

a. 作為 Kubernetes cron作業(yè)在后臺(tái)運(yùn)行的 Python 腳本從 Nginx namespace 的Kubecost REST API Endpoint收集成本信息。http://>/model/allocation

b. 定期更新configmap namespace-cost configmap中存在的成本信息

2.ConfigMap

a. Kyverno namespace 中的ConfigMap ,其中包含 Nginx namespace 的成本信息

3.Kyverno Policy

a. Kyverno策略監(jiān)控存儲(chǔ)在 namespace-configmap 中的數(shù)據(jù)以了解成本值的變化

b. 如果 Nginx namespace 的總成本高于閾值,則創(chuàng)建報(bào)告失敗。

上述組件可以從參考資料部分的Github頁(yè)面下載。

七、Demo 工作流程

1.創(chuàng)建一個(gè) Nginx namespace 并部署 Nginx replicas。

kubectl create namespace nginx
Kubectl create deploy nginx -—image = nginx -—replicas=10

我們假設(shè)Kyverno在 Kyverno namespace 中運(yùn)行,并且Kubecost應(yīng)用程序已啟動(dòng)并運(yùn)行以向我們提供成本信息。

2.使用cm.yaml在 namespace Kyverno中創(chuàng)建

configmap namespace-cost
kubectl create -f cm.yaml -n kyverno

3.創(chuàng)建更新namespace-cost中的ConfigMap所需的RBAC 資源( ServiceAccount 、 ClusterRole 、 ClusterRoleBindings ) 。


kubectl create -f rbac.yaml

4.將采集腳本 kubecost-collector.py 復(fù)制到 Kubernetes 集群。

A. 將kubecost-collector放入文件夾后,使用Dockerfile構(gòu)建Docker鏡像。確保使用***kubecost*** cost-analyzer REST API Endpoint 更新腳本。

mkdir <FOLDER_NAME>
cp Dockerfile <FOLDER_NAME>
cp kubecost-collector.py <FOLDER_NAME>
docker build -t kubecost-collector

一旦上述命令完成了kubecost -collector鏡像是否存在的驗(yàn)證。

dockerimages kubecost-collector
REPOSITORY TAG IMAGE ID CREATED SIZE
kubecost-collector latest 47a05cdc11bf 16 minutes ago 205MB

B. kubecost -collector作為 Kubernetes cron job運(yùn)行kubectl create -f cron.yaml

驗(yàn)證在步驟 2 中創(chuàng)建的 cm 的成本現(xiàn)在已更新為非零值,因?yàn)閗ubecost -collector正在從kubecost REST API Endpoint獲取實(shí)時(shí)值。

-collector正在從kubecost REST API Endpoint獲取實(shí)時(shí)值。
Data
====
nginx
----
0.481581

BinaryData
====

5.創(chuàng)建Kyverno集群策略

 namespace-cost
kubectl apply -f policy.yaml

在應(yīng)用之前在策略中設(shè)置合適的成本閾值。由于工作負(fù)載是最近的,它最初可能具有非常低的成本。

6.驗(yàn)證namespace-cost策略是否處于 READY 狀態(tài)。

kubectl get cpol

NAME BACKGROUND ACTION READY

namespace-cost true audit true

該策略應(yīng)該立即通過(guò),因?yàn)樾聞?chuàng)建的Nginx namespace 的運(yùn)行成本將低于分配的閾值。


kubectlget cpolr
NAME PASS FAIL WARN ERROR SKIP AGE
clusterpolicyreport 1 0 0 0 20 3m8s

7.將Nginx replicas提高到更高的值,使總成本值高于policy.yaml中分配的閾值。

或者,您也可以在Nginx namespace 而不是nginx Web 服務(wù)器副本中運(yùn)行 CPU/內(nèi)存密集型工作負(fù)載。

8.隨著 namespace Nginx的成本變高,策略將失敗。使用kubectl檢查策略報(bào)告以獲取polr 。可以使用Nirmata Policy Reports UI 進(jìn)行驗(yàn)證。

kubectlget cpolr
NAME PASS FAIL WARN ERROR SKIP AGE
clusterpolicyreport 0 1 0 0 20 5m8s

以上故障可以通過(guò)描述查看詳細(xì)信息。


kubectl describe cpolr clusterpolicyreport | grep "Result: \+fail" -B10
Timestamp:
Nanos: 0
Seconds: 1644935662
Message: The namespace running cost not within defined threshold
Policy: namespace-cost
Resources:
API Version: v1
Kind: Namespace
Name: nginx
UID: f1d06aa0-6fdf-44ab-a935-c5b8cf903e2e
Result: fail

八、總結(jié)

當(dāng) namespace 超出成本閾值時(shí),用戶(hù)可以向各個(gè)團(tuán)隊(duì)發(fā)出告警,并基于特定事件對(duì)其采取行動(dòng)。Kyverno提供不同的規(guī)則(Mutate, Validate, Generate)來(lái)對(duì)用戶(hù)定義的現(xiàn)有和新工作負(fù)載采取行動(dòng),甚至基于策略中定義的條件(Generate)創(chuàng)建新資源。

原文鏈接:https://dzone.com/articles/cost-governance-of-cloud-native-workloads-using-kubecost-and-kyverno

譯者介紹

王志軍(besterjun),51CTO社區(qū)編輯,國(guó)內(nèi)某云廠商解決方案架構(gòu)師,擁有10多年工作經(jīng)驗(yàn),長(zhǎng)期從事解決方案架構(gòu)設(shè)計(jì)、微服務(wù)、容器、網(wǎng)絡(luò)運(yùn)維等相關(guān)工作。專(zhuān)注于云原生、微服務(wù)、容器等技術(shù)領(lǐng)域。擁有豐富的多云混合云架構(gòu)規(guī)劃、設(shè)計(jì)和落地經(jīng)驗(yàn),已幫助多家企業(yè)成功上云。

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2022-03-30 07:45:41

KyvernoAPI開(kāi)源項(xiàng)目

2018-02-24 21:45:59

云計(jì)算多云模式成本

2022-06-23 07:34:58

云原生數(shù)據(jù)庫(kù)

2017-12-27 14:22:07

數(shù)據(jù)中心負(fù)載成本

2023-04-12 07:31:55

KyvernoKubernetes

2022-09-19 14:39:51

開(kāi)源HummerRisk

2023-10-25 16:31:50

云原生數(shù)據(jù)治理

2025-03-11 08:04:39

2021-09-09 07:33:50

開(kāi)源騰訊云原生

2018-10-18 17:37:55

2018-09-30 15:58:34

2021-09-03 09:21:46

云計(jì)算工作負(fù)載云平臺(tái)

2020-10-10 10:20:11

云計(jì)算云安全技術(shù)

2024-12-09 09:31:11

2022-07-22 10:30:28

負(fù)載均衡器OpenELB

2013-12-04 09:47:04

云計(jì)算虛擬化

2021-04-16 15:04:07

GitGit工作樹(shù)Linux

2021-07-08 13:33:52

云計(jì)算工作負(fù)載云平臺(tái)

2021-08-12 09:15:33

云計(jì)算工作負(fù)載云平臺(tái)

2023-04-12 07:26:58

翼支付大數(shù)據(jù)平臺(tái)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)