推荐使用的标签
除了支持工具外,推荐的标签还以一种可以查询的方式描述了应用程序。
元数据围绕 应用(application) 的概念进行组织。Kubernetes 不是 平台即服务(PaaS),没有或强制执行正式的应用程序概念。 相反,应用程序是非正式的,并使用元数据进行描述。应用程序包含的定义是松散的。
说明:
这些是推荐的标签。它们使管理应用程序变得更容易但不是任何核心工具所必需的。
共享标签和注解都使用同一个前缀:。没有前缀的标签是用户私有的。共享前缀可以确保共享标签不会干扰用户自定义的标签。
为了充分利用这些标签,应该在每个资源对象上都使用它们。
应用可以在 Kubernetes 集群中安装一次或多次。在某些情况下,可以安装在同一命名空间中。例如,可以不止一次地为不同的站点安装不同的 WordPress。
应用的名称和实例的名称是分别记录的。例如,WordPress 应用的 app.kubernetes.io/name
为 wordpress
,而其实例名称 app.kubernetes.io/instance
为 wordpress-abcxzy
。 这使得应用和应用的实例均可被识别,应用的每个实例都必须具有唯一的名称。
为了说明使用这些标签的不同方式,以下示例具有不同的复杂性。
考虑使用 和 Service
对象部署的简单无状态服务的情况。以下两个代码段表示如何以最简单的形式使用标签。
下面的 Deployment
用于监督运行应用本身的 pods。
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/name: myservice
...
下面的 Service
用于暴露应用。
带有一个数据库的 Web 应用程序
以下 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/component: server
...
这个 Service
用于暴露 WordPress:
MySQL 作为一个 StatefulSet
暴露,包含它和它所属的较大应用程序的元数据:
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
...
Service
用于将 MySQL 作为 WordPress 的一部分暴露:
使用 MySQL StatefulSet
和 ,你会注意到有关 MySQL 和 Wordpress 的信息,包括更广泛的应用程序。