13、kubernetes推荐使用的标签-Label

网友投稿 767 2022-11-02

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

13、kubernetes推荐使用的标签-Label

除了 kubectl 和 dashboard 之外,您可以其他工具来可视化和管理 Kubernetes 对象。一组通用的标签可以让多个工具之间互操作,用所有工具都能理解的通用方式描述对象。

除了支持工具外,推荐的标签还以一种可以查询的方式描述了应用程序。

元数据围绕 应用(application) 的概念进行组织。Kubernetes 不是 平台即服务(PaaS),没有或强制执行正式的应用程序概念。相反,应用程序是非正式的,并使用元数据进行描述。应用程序包含的定义是松散的。

Note:这些是推荐的标签。它们使管理应用程序变得更容易但不是任何核心工具所必需的。

共享标签和注解都使用同一个前缀:app.kubernetes.io。没有前缀的标签是用户私有的。共享前缀可以确保共享标签不会干扰用户自定义的标签。

标签

为了充分利用这些标签,应该在每个资源对象上都使用它们。

描述示例类型
app.kubernetes.io/name
应用程序的名称mysql
字符串
app.kubernetes.io/instance
用于唯一确定应用实例的名称wordpress-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
字符串

为说明这些标签的实际使用情况,请看下面的 StatefulSet 对象:

apiVersion: apps/v1kind: StatefulSetmetadata: labels: app.kubernetes.io/name: mysql app.kubernetes.io/instance: wordpress-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

应用和应用实例

应用可以在 Kubernetes 集群中安装一次或多次。在某些情况下,可以安装在同一命名空间中。例如,可以不止一次地为不同的站点安装不同的 wordpress。

应用的名称和实例的名称是分别记录的。例如,某 WordPress 实例的 app.kubernetes.io/name 为 wordpress,而其实例名称表现为 app.kubernetes.io/instance 的属性值 wordpress-abcxzy。这使应用程序和应用程序的实例成为可能是可识别的。应用程序的每个实例都必须具有唯一的名称。

示例

为了说明使用这些标签的不同方式,以下示例具有不同的复杂性。

一个简单的无状态服务

考虑使用 Deployment 和 Service 对象部署的简单无状态服务的情况。以下两个代码段表示如何以最简单的形式使用标签。

下面的 Deployment 用于监督运行应用本身的 pods。

apiVersion: apps/v1kind: Deploymentmetadata: labels: app.kubernetes.io/name: myservice app.kubernetes.io/instance: myservice-abcxzy...

下面的 Service 用于暴露应用。

apiVersion: v1kind: Servicemetadata: labels: app.kubernetes.io/name: myservice app.kubernetes.io/instance: myservice-abcxzy...

带有一个数据库的 Web 应用程序

考虑一个稍微复杂的应用:一个使用 Helm 安装的 Web 应用(WordPress),其中 使用了数据库(MySQL)。以下代码片段说明用于部署此应用程序的对象的开始。

以下 Deployment 的开头用于 WordPress:

apiVersion: apps/v1kind: Deploymentmetadata: 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: v1kind: Servicemetadata: 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 暴露,包含它和它所属的较大应用程序的元数据:

apiVersion: apps/v1kind: StatefulSetmetadata: labels: app.kubernetes.io/name: mysql app.kubernetes.io/instance: mysql-abcxzy app.kubernetes.io/managed-by: helm app.kubernetes.io/component: database app.kubernetes.io/part-of: wordpress app.kubernetes.io/version: "5.7.21"...

Service 用于将 MySQL 作为 WordPress 的一部分暴露:

apiVersion: v1kind: Servicemetadata: labels: app.kubernetes.io/name: mysql app.kubernetes.io/instance: mysql-abcxzy app.kubernetes.io/managed-by: helm app.kubernetes.io/component: database app.kubernetes.io/part-of: wordpress app.kubernetes.io/version: "5.7.21"...

使用 MySQL StatefulSet 和 Service,您会注意到有关 MySQL 和 Wordpress 的信息,包括更广泛的应用程序。

上一篇:软件测试培训之为了顺利上线,测试人员需要注意什么?
下一篇:软件测试培训之测试阶段
相关文章

 发表评论

暂时没有评论,来抢沙发吧~