使用Kubernetes对象7---推荐标签(Recommended Labels)

你可以通过kubectl和dashboard之外的其他工具视图化和管理Kubernetes对象。一组通用标签允许工具们交互工作、以所有工具都能理解的方式描述对象。

为了支持工具化,推荐标签使用可查询的方式描述应用。

元数据(metadata)围绕应用(application)的概念组织。Kubernetes并非平台及服务(PaaS)并且没有也不强制应用的格式观念。相反,应用是非正规的且通过元数据描述。

注:这些是推荐的标签,并且对任何核心工具都不是必须的。

共享的标签和注解共享同一个前缀:app.kubernetes.io. 没有前缀的标签是用户私有的。前缀保证共享标签不与用户定制标签冲突。

标签(Labels)

为了完全获得使用这些标签的好处,它们应该被用于每个资源对象上。

key描述例子类型
app.kubernetes.io/name应用名mysqlstring
app.kubernetes.io/instance应用的唯一标识符wordpress-abcxzystring
app.kubernetes.io/version应用的当前版本5.7.21string
app.kubernetes.io/component架构内的组件databasestring
app.kubernetes.io/part-of该应用所属的更高级应用wordpressstring
app.kubernetes.io/managed-by用来管理该应用的工具helmstring

参考下面的状态集(StatefulSet)对象来实际解释这些标签。

apiVersion: apps/v1
kind: StatefulSet
metadata:
  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实例。

应用的名称和实例的名称是分开记录的。例如,WordPress有一个应用名,app.kubernetes.io/name标签值是wordpress,同时实例的app.kubernetes.io/instance标签值是wordpress-abcxzy。这可以识别应用和应用实例。每个实例的名称都必须是唯一的。

例子

我们来通过不同复杂度的例子以解释如何使用这些标签。

简单无状态服务

下面是使用DeploymentService对象部署的简单无状态服务。下面的两个片段展示和如何通过简单的格式使用这些标签。

用来监督运行应用的节点(pods)的Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: myservice
    app.kubernetes.io/instance: myservice-abcxzy
...

用来暴露应用的Service

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: myservice
    app.kubernetes.io/instance: myservice-abcxzy
...

包含数据库的web应用

稍微复杂的应用:包含数据库(MySQL)的web应用(WordPress),使用Helm安装。下面的片段展示了用来部署该应用的对象的开头。

用于WordPress的Deployment的开头。

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
...

用来暴露应用WordPress的Service

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
...

包含该应用和更高级应用的元数据、作为状态集(StatefulSet)的MySQL

apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app.kubernetes.io/name: mysql
    app.kubernetes.io/instance: wordpress-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"
...

暴露WordPress中MySQL的Service

apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/name: mysql
    app.kubernetes.io/instance: wordpress-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状态集和Service,你可以获得MySQL和Wordpress的信息,更高级的应用被包含在了其中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值