日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Kubernetes標(biāo)簽:包含10項優(yōu)秀實踐的專家指南

Kubernetes 標(biāo)簽:包含10項優(yōu)秀實踐的專家指南

作者:科技狠活與軟件技術(shù) 2022-11-30 15:28:55

云計算 借助 Kubernetes 標(biāo)簽,DevOps 團(tuán)隊可以更快地解決問題、集中應(yīng)用配置更改并快速響應(yīng)問題。標(biāo)簽還可以讓您深入了解成本,提高您的監(jiān)控、分配和管理能力。在使用標(biāo)簽時遵循最佳實踐可幫助您從基礎(chǔ)架構(gòu)可見性和高效運營中獲得巨大收益。

成都創(chuàng)新互聯(lián)公司是一家從事企業(yè)網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站建設(shè)、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計制作的專業(yè)網(wǎng)絡(luò)公司,擁有經(jīng)驗豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨特的設(shè)計風(fēng)格。自公司成立以來曾獨立設(shè)計制作的站點上1000+。

借助 Kubernetes 標(biāo)簽,DevOps 團(tuán)隊可以更快地解決問題、集中應(yīng)用配置更改并快速響應(yīng)問題。標(biāo)簽還可以讓您深入了解成本,提高您的監(jiān)控、分配和管理能力。在使用標(biāo)簽時遵循最佳實踐可幫助您從基礎(chǔ)架構(gòu)可見性和高效運營中獲得巨大收益。

以下是您需要了解的有關(guān) Kubernetes 標(biāo)簽的所有信息 - 它們是什么、它們?nèi)绾喂ぷ鳌⒑螘r使用它們,以及構(gòu)建可靠標(biāo)簽策略應(yīng)遵循的 10 條最佳實踐。

什么是 Kubernetes 標(biāo)簽?

Kubernetes 標(biāo)簽是將標(biāo)識元數(shù)據(jù)鏈接到 Kubernetes 對象的鍵值字符串對。Kubernetes 為團(tuán)隊提供了集成支持,可以使用標(biāo)簽從 Kubernetes API 中檢索和過濾數(shù)據(jù),并對所選對象進(jìn)行批量操作。

許多團(tuán)隊使用 Kubernetes 標(biāo)簽為 DevOps 提供有關(guān)節(jié)點、Pod 或其他 Kubernetes 對象的所有權(quán)的信息,以便于跟蹤和運營決策制定。

創(chuàng)建新標(biāo)簽時,您必須遵守 Kubernetes 對長度和允許值的限制。標(biāo)簽值必須:

  • 包含 63 個字符或更少(標(biāo)簽的值也可以為空),
  • 以字母數(shù)字字符開頭和結(jié)尾(除非它為空),
  • 僅包含破折號 (-)、下劃線 (_)、點 (.) 和字母數(shù)字。

您可以使用 找到 Kubernetes 對象具有的標(biāo)簽kubectl。例如,要獲取名為 的 pod 的所有標(biāo)簽pod1,您可以運行:

> kubectl get pod1 -o json | jq .metadata.labels

要創(chuàng)建標(biāo)簽,您可以在配置文件規(guī)范的metadata.labels對象中指定它們。讓我們考慮pod.yaml描述單個 pod 的文件:

apiVersion: v1kind: Podmetadata: name: nginx labels: environment: dev 
critical: "true"spec: containers: - image: nginx name: nginx resources:
requests: cpu: 500m

請注意,critical標(biāo)簽的值是“true”而不是true。這是因為標(biāo)簽及其值必須是字符串。

讓我們應(yīng)用配置文件:

> kubectl apply -f pod.yamlpod/nginx created

您現(xiàn)在可以使用 直接在已經(jīng)存在的 Kubernetes 對象上應(yīng)用或覆蓋標(biāo)簽kubectl。首先,獲取 pod 具有的所有標(biāo)簽:

> kubectl get pod nginx -o json | jq .metadata.labels{ "critical": "true", 
"environment": "dev"}

現(xiàn)在,要更改environment標(biāo)簽的值并添加新的鍵值標(biāo)簽對deprecated=true,我們執(zhí)行以下命令:

> kubectl label pod nginx environment=prod --overwritepod/nginx 
labeled> kubectl label pod nginx deprecated=truepod/nginx labeled

–overwrite請記住,除非您明確地用標(biāo)志覆蓋它,否則不允許更新標(biāo)簽的值。生成的標(biāo)簽如下:

> kubectl get pod nginx -o json | jq .metadata.labels{ "deprecated": 
"true", "critical": "true", "environment": "prod"}

Kubernetes 標(biāo)簽與注解

Kubernetes 提供了兩種將元數(shù)據(jù)與對象連接起來的策略:標(biāo)簽和注釋。

注釋是將非標(biāo)識元數(shù)據(jù)與對象連接起來的鍵值對。例如,注釋可以包含給定資源的日志記錄或監(jiān)視信息。

標(biāo)簽和注解的主要區(qū)別在于注解不用于過濾、分組或操作 Kubernetes 資源。相反,您可以使用它們來訪問有關(guān)它的其他信息。

例如之前部署的pod已經(jīng)調(diào)度到的節(jié)點注解如下:

> kubectl get node demo-node -o json | jq .metadata.annotations{ 
"kubeadm.alpha.kubernetes.io/cri-socket": "unix:///var/run/cri-dockerd.sock",
"node.alpha.kubernetes.io/ttl": "0",
"volumes.kubernetes.io/controller-managed-attach-detach": "true"}

這些注釋不提供有關(guān)節(jié)點特征的任何信息。相反,他們提供了一些關(guān)于節(jié)點如何工作的數(shù)據(jù)。

什么時候使用 Kubernetes 標(biāo)簽?

對象查詢的組資源

如果將相同的標(biāo)簽鍵值對添加到多個資源中,其他人可以輕松查詢到所有資源。例如,DevOps 工程師發(fā)現(xiàn)開發(fā)環(huán)境不可用。此時,他們可以快速查看包括 label 在內(nèi)的所有 pod 的狀態(tài)environment:dev。

這是一個示例命令:

> kubectl get pods -l 'environment=dev'NAME READY STATUS RESTARTS AGEnginx 
0/1 CrashLoopBackOff 1 5m

這讓團(tuán)隊可以立即看到受影響的 pod 并解決問題,這比瀏覽所有資源并僅選擇dev環(huán)境中的資源要快得多。

在具有許多不同部署的復(fù)雜情況下,dev如果工程團(tuán)隊沒有將environment:dev標(biāo)簽添加到資源中,那么找到合適的 pod 將花費 DevOps 工程師很長時間。DevOps 工程師必須使用通用kubectl get pods命令,然后使用grep.

執(zhí)行批量操作

Kubernetes 標(biāo)簽的另一個用例是根據(jù)資源標(biāo)簽執(zhí)行批量操作。

假設(shè)工程師每晚移除所有暫存環(huán)境以降低云成本。通過使用 Kubernetes 標(biāo)簽,他們可以輕松地自動執(zhí)行此任務(wù)。

例如,這是一個刪除所有標(biāo)記為environment:local,environment:dev或的對象的命令environment:staging:

> kubectl delete deployment,services,statefulsets -l 'environment in 
(local,dev,staging)'

根據(jù)節(jié)點標(biāo)簽調(diào)度 pod

Kubernetes 標(biāo)簽的隱藏寶石是它們在 Kubernetes 本身中被大量使用,用于將 pod 調(diào)度到適當(dāng)?shù)墓?jié)點。通過使用標(biāo)簽,您可以通過讓 Kubernetes 將特定部署安排到特定節(jié)點來更好地控制您創(chuàng)建的資源。

讓我們看看這在實踐中是如何工作的:

> kubectl get nodesNAME STATUS ROLES AGE VERSIONgke-node-1fe68171 Ready 
1d v1.22.12-gke.2300gke-node-3cdf3d2b Ready 3d
v1.22.12-gke.2300gke-node-5f7b4cf1 Ready 5d v1.22.12-gke.500> kubectl
get nodes -l ‘critical=true’No resources found

當(dāng)前,不存在具有標(biāo)簽的節(jié)點critical:true。

讓我們嘗試critical:true使用節(jié)點選擇器創(chuàng)建一個必須在具有標(biāo)簽的節(jié)點上調(diào)度的 pod。這是一個pod.yaml配置文件:

apiVersion: v1kind: Podmetadata: name: nginx labels: environment: prodspec: 
nodeSelector: critical: "true" containers: - image: nginx name: nginx resources:
requests: cpu: 500m

現(xiàn)在讓我們應(yīng)用它并檢查會發(fā)生什么:

> kubectl apply -f pod.yamlpod/nginx created> kubectl get pod nginxNAME 
READY STATUS RESTARTS AGEnginx 0/1 Pending 0 1m> kubectl get events
--field-selector involvedObject.name=nginxLAST SEEN TYPE REASON OBJECT
MESSAGE46s Warning FailedScheduling pod/nginx 0/1 nodes are available: 1 node(s)
didn't match Pod's node affinity/selector. preemption: 0/1 nodes are available:
1 Preemption is not helpful for scheduling.

請注意,pod 無法在任何節(jié)點上調(diào)度,因為它們都沒有所需的標(biāo)簽?,F(xiàn)在,讓我們用所需的標(biāo)簽標(biāo)記其中一個節(jié)點:

> kubectl label node gke-node-5f7b4cf1 critical=truenode/gke-node-5f7b4cf1 
labeled> kubectl get nodes -l 'critical=true'NAME STATUS ROLES AGE
VERSIONgke-node-5f7b4cf1 Ready 5h v1.22.12-gke.500

現(xiàn)在,讓我們檢查 pod:

> kubectl get pod nginxNAME READY STATUS RESTARTS AGEnginx 1/1 Running 0 
3m31s

Pod 已成功調(diào)度到該節(jié)點。

請記住,如果在節(jié)點選擇器中指定了多個標(biāo)簽,則它們都必須被一個節(jié)點滿足,以便 pod 被調(diào)度到它上面。

Kubernetes 標(biāo)簽的 10 個最佳實踐

1.使用Kubernetes推薦的標(biāo)簽

Kubernetes 提供了一個推薦的標(biāo)簽列表,用于對對象進(jìn)行分組。例如,Kubernetes 推薦使用app.kubernetes.io/name和

app.kubernetes.io/instance分別表示應(yīng)用程序的名稱和實例。只需刪除前綴“app.kubernetes.io”并添加您公司的子域即可自定義標(biāo)簽。

2.注意語法正確

要創(chuàng)建 Kubernetes 標(biāo)簽鍵值對,您需要使用以下語法:/. 讓我們深入了解細(xì)節(jié):

  • <前綴>

前綴是可選的;如果您選擇使用它,它需要是一個有效的 DNS 子域(例如“cast.ai”)并且總共不超過 253 個字符。對于非用戶私有的工具和命令,前綴會派上用場。它們也很有用,因為它們允許團(tuán)隊使用多個標(biāo)簽,否則會發(fā)生沖突(想想第三方包中的標(biāo)簽)。

請注意,前綴kubernetes.io/和k8s.io前綴是為 Kubernetes 核心組件保留的。

  • <名稱>

這部分是指標(biāo)簽的任意屬性名。為了清楚起見,團(tuán)隊可以使用名稱“環(huán)境”和標(biāo)簽值,例如“生產(chǎn)”或“測試”。

名稱必須滿足與標(biāo)簽值相同的要求,但不能為空。因此,名稱需要包含 63 個字符或更少,以字母數(shù)字字符 ([a-z0-9A-Z]) 開頭和結(jié)尾,中間有破折號 (-)、下劃線 (_)、點 (.) 和字母數(shù)字.

3.標(biāo)準(zhǔn)化標(biāo)簽命名約定

使用 Kubernetes 的多個團(tuán)隊需要遵循相同的標(biāo)簽約定。否則,所有的標(biāo)簽工作都不會給你帶來任何價值。

讓您的開發(fā)管道對資源配置文件執(zhí)行靜態(tài)代碼分析以確保所有必需的標(biāo)簽都存在是一個很好的做法。如果您未能正確應(yīng)用標(biāo)簽,自動化流程可能會中斷——您使用的任何監(jiān)控解決方案都可能向您發(fā)送誤報警報。

4.避免對標(biāo)簽進(jìn)行不必要的改動

Kubernetes 中的標(biāo)簽用于識別和選擇用于調(diào)度、部署和管理目的的資源。因此,修改資源標(biāo)簽可能會產(chǎn)生深遠(yuǎn)且無法預(yù)料的影響。

例如,如果您將一組 pod 的“app”標(biāo)簽從“frontend”切換到“backend”,Kubernetes 可以將這些 pod 重新安排到未設(shè)置為運行“backend”應(yīng)用程序的節(jié)點上。吊艙可能會崩潰;結(jié)果,使它們不可用。

只有在絕對必要時才修改標(biāo)簽,并在進(jìn)行任何更改之前仔細(xì)評估其后果以避免此類問題,這一點至關(guān)重要。

5.使用標(biāo)簽選擇選項

團(tuán)隊可以根據(jù)相等性和集合來選擇帶標(biāo)簽的對象。

基于相等性的選擇允許您檢索標(biāo)簽等于或不等于指定值(或多個值)的對象。深入語法,= 和 == 都表示相等,而 != 表示不等??梢蕴砑右远禾柗指舻亩鄠€標(biāo)簽(所有條件都需要在此處匹配)。例如,如果您執(zhí)行以下命令:

> kubectl get pods -l ‘environment=dev,release=daily’

它將返回所有帶有標(biāo)簽environment:devAND的 pod release:daily。

另一方面,基于集合的選擇允許一次查找具有多個值的資源。集合類似于INSQL 中的關(guān)鍵字。例如,以下命令:

> kubectl get pods -l ‘environment in (prod,dev)’

將找到所有包含標(biāo)簽environment=prodOR的 pod environment=dev。

6. 不要在標(biāo)簽中存儲應(yīng)用程序級語義

Kubernetes 標(biāo)簽可能與對象的元數(shù)據(jù)一起出現(xiàn),但它們不應(yīng)該用作應(yīng)用程序的數(shù)據(jù)存儲。鑒于 Kubernetes 資源的使用時間通常很短,并且與應(yīng)用程序沒有緊密關(guān)聯(lián),標(biāo)簽很快就會變得不同步,因此變得無用。

7. 不要在標(biāo)簽中存儲敏感信息

如果有人在您將密碼或 API 憑據(jù)或其他敏感數(shù)據(jù)存儲在標(biāo)簽中時獲得了對您的 Kubernetes 集群的訪問權(quán)限,他們將能夠以純文本形式看到它。這是一個重大的安全風(fēng)險,可能會產(chǎn)生身份盜用或數(shù)據(jù)泄露等負(fù)面影響。

建議以秘密而不是標(biāo)簽的形式保存敏感信息。秘密是加密的,只有需要它們的 pod 才能解密。通過這樣做,即使有人設(shè)法訪問您的 Kubernetes 集群,他們也無法查看保密的私有數(shù)據(jù)。

8. 給 pod 模板添加標(biāo)簽

將基本標(biāo)簽添加到作為工作負(fù)載資源一部分的 pod 模板。這樣,Kubernetes 控制器可以始終如一地創(chuàng)建具有您指定狀態(tài)的 pod。

目標(biāo)不應(yīng)該是創(chuàng)建盡可能多的標(biāo)簽,而是創(chuàng)建能為您的團(tuán)隊帶來價值的標(biāo)簽。從小處著手,創(chuàng)建一個標(biāo)簽列表作為模板的一部分。例如,您可以從確定資源所有者、資源運行環(huán)境和版本開始。

9. 自動化你的標(biāo)簽實踐

自動化可以為您節(jié)省大量時間,標(biāo)簽也不例外。如果您設(shè)置了持續(xù)集成/持續(xù)交付 (CI/CD) 管道,則可以輕松地自動化一些橫切關(guān)注點標(biāo)簽。

使用 CD 工具自動附加標(biāo)簽是明智的,因為它可以保證一致性并提高工程師的工作效率。讓 CI 作業(yè)通過使構(gòu)建失敗并在標(biāo)簽丟失時向負(fù)責(zé)團(tuán)隊發(fā)送通知來強(qiáng)制執(zhí)行正確的標(biāo)簽也是一種很好的做法。

10.使用標(biāo)簽進(jìn)行成本監(jiān)控

標(biāo)簽對于更好地了解您的 Kubernetes 云成本非常有幫助。成本監(jiān)控、分配和管理都依賴于適當(dāng)?shù)臉?biāo)簽策略。

如果多個租戶在單個集群中共享資源,您需要使用相關(guān)標(biāo)簽來創(chuàng)建成本分配報告。這就是您可以確定哪個團(tuán)隊、服務(wù)或應(yīng)用程序產(chǎn)生了特定成本的方式,這在調(diào)查意外成本激增時非常有幫助。

使用此免費監(jiān)控工具按標(biāo)簽跟蹤您的成本

CAST AI 提供了一個成本監(jiān)控工具,讓您可以隨時了解任何工作負(fù)載的成本。成本可以通過任何工作負(fù)載上存在的任何標(biāo)簽進(jìn)行過濾,從而可以輕松跟蹤每個團(tuán)隊、服務(wù)或您使用的任何其他標(biāo)簽的云成本。按標(biāo)簽對工作負(fù)載進(jìn)行分組的選項即將推出。

通過將集群連接到 CAST AI 的免費成本監(jiān)控解決方案,了解良好的標(biāo)簽和成本監(jiān)控可以帶來的不同。


新聞名稱:Kubernetes標(biāo)簽:包含10項優(yōu)秀實踐的專家指南
文章URL:http://m.5511xx.com/article/ccooeeh.html