W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
除了 kubectl 和 dashboard 之外,您可以使用其他工具來可視化和管理 Kubernetes 對象。一組通用的標(biāo)簽可以讓多個工具之間相互操作,用所有工具都能理解的通用方式描述對象。
除了支持工具外,推薦的標(biāo)簽還以一種可以查詢的方式描述了應(yīng)用程序。
元數(shù)據(jù)圍繞 應(yīng)用(application) 的概念進(jìn)行組織。Kubernetes 不是 平臺即服務(wù)(PaaS),沒有或強(qiáng)制執(zhí)行正式的應(yīng)用程序概念。 相反,應(yīng)用程序是非正式的,并使用元數(shù)據(jù)進(jìn)行描述。應(yīng)用程序包含的定義是松散的。
這些是推薦的標(biāo)簽。它們使管理應(yīng)用程序變得更容易但不是任何核心工具所必需的。
共享標(biāo)簽和注解都使用同一個前綴:?app.kubernetes.io
?。沒有前綴的標(biāo)簽是用戶私有的。共享前綴可以確保共享標(biāo)簽不會干擾用戶自定義的標(biāo)簽。
為了充分利用這些標(biāo)簽,應(yīng)該在每個資源對象上都使用它們。
鍵 | 描述 | 示例 | 類型 |
---|---|---|---|
app.kubernetes.io/name
|
應(yīng)用程序的名稱 | mysql
|
字符串 |
app.kubernetes.io/instance
|
用于唯一確定應(yīng)用實(shí)例的名稱 | mysql-abcxzy
|
字符串 |
app.kubernetes.io/version
|
應(yīng)用程序的當(dāng)前版本(例如,語義版本,修訂版哈希等) | 5.7.21
|
字符串 |
app.kubernetes.io/component
|
架構(gòu)中的組件 | database
|
字符串 |
app.kubernetes.io/part-of
|
此級別的更高級別應(yīng)用程序的名稱 | wordpress
|
字符串 |
app.kubernetes.io/managed-by
|
用于管理應(yīng)用程序的工具 | helm
|
字符串 |
app.kubernetes.io/created-by
|
創(chuàng)建該資源的控制器或者用戶 | controller-manager
|
字符串 |
為說明這些標(biāo)簽的實(shí)際使用情況,請看下面的 StatefulSet 對象:
# 這是一段節(jié)選
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/name: mysql
app.kubernetes.io/instance: mysql-abcxzy
app.kubernetes.io/version: "5.7.21"
app.kubernetes.io/component: database
app.kubernetes.io/part-of: wordpress
app.kubernetes.io/managed-by: helm
app.kubernetes.io/created-by: controller-manager
應(yīng)用可以在 Kubernetes 集群中安裝一次或多次。在某些情況下,可以安裝在同一命名空間中。例如,可以不止一次地為不同的站點(diǎn)安裝不同的 WordPress。
應(yīng)用的名稱和實(shí)例的名稱是分別記錄的。例如,WordPress 應(yīng)用的 ?app.kubernetes.io/name
? 為 ?wordpress
?,而其實(shí)例名稱 ?app.kubernetes.io/instance
? 為 ?wordpress-abcxzy
?。 這使得應(yīng)用和應(yīng)用的實(shí)例均可被識別,應(yīng)用的每個實(shí)例都必須具有唯一的名稱。
為了說明使用這些標(biāo)簽的不同方式,以下示例具有不同的復(fù)雜性。
考慮使用 ?Deployment
?和 ?Service
?對象部署的簡單無狀態(tài)服務(wù)的情況。以下兩個代碼段表示如何以最簡單的形式使用標(biāo)簽。
下面的 ?Deployment
?用于監(jiān)督運(yùn)行應(yīng)用本身的 pods。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: myservice
app.kubernetes.io/instance: myservice-abcxzy
...
下面的 ?Service
?用于暴露應(yīng)用。
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: myservice
app.kubernetes.io/instance: myservice-abcxzy
...
考慮一個稍微復(fù)雜的應(yīng)用:一個使用 Helm 安裝的 Web 應(yīng)用(WordPress),其中 使用了數(shù)據(jù)庫(MySQL)。以下代碼片段說明用于部署此應(yīng)用程序的對象的開始。
以下 ?Deployment
?的開頭用于 WordPress:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: wordpress
app.kubernetes.io/instance: wordpress-abcxzy
app.kubernetes.io/version: "4.9.4"
app.kubernetes.io/managed-by: helm
app.kubernetes.io/component: server
app.kubernetes.io/part-of: wordpress
...
這個 ?Service
?用于暴露 WordPress:
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: wordpress
app.kubernetes.io/instance: wordpress-abcxzy
app.kubernetes.io/version: "4.9.4"
app.kubernetes.io/managed-by: helm
app.kubernetes.io/component: server
app.kubernetes.io/part-of: wordpress
...
MySQL 作為一個 ?StatefulSet
?暴露,包含它和它所屬的較大應(yīng)用程序的元數(shù)據(jù):
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app.kubernetes.io/name: mysql
app.kubernetes.io/instance: mysql-abcxzy
app.kubernetes.io/version: "5.7.21"
app.kubernetes.io/managed-by: helm
app.kubernetes.io/component: database
app.kubernetes.io/part-of: wordpress
...
?Service
?用于將 MySQL 作為 WordPress 的一部分暴露:
apiVersion: v1
kind: Service
metadata:
labels:
app.kubernetes.io/name: mysql
app.kubernetes.io/instance: mysql-abcxzy
app.kubernetes.io/version: "5.7.21"
app.kubernetes.io/managed-by: helm
app.kubernetes.io/component: database
app.kubernetes.io/part-of: wordpress
...
使用 MySQL ?StatefulSet
?和 ?Service
?,您會注意到有關(guān) MySQL 和 Wordpress 的信息,包括更廣泛的應(yīng)用程序。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: