k8s label设置
k8s label设置,标签(labels)如其名,用于标识对象,以键值对的形式表示。这个键值对会被附加到 Kubernetes 对象(即Pods)上,标签帮助我们识别对象的属性。这对用户来说是有意义且相关的信息。标签的作用是为用户提供有意义的信息,而不是为核心系统提供信息。我们可以在创建对象时附加标签,并在需要时随时修改它们。我们拥有的每个对象都应该定义一个键值对,并且给定对象的每个键都应该是唯一的,以正确识别它。在本教程的后续部分中,我们将更详细地了解标签的实现和语法,以便更好地理解和理清其概念。
Kubernetes标签要求:
在创建标签之前,有一些语法规则需要遵循。标签可以帮助我们将组织或公司的结构映射到系统对象上,实现松散耦合。这种映射不需要客户端在其本地存储。在开始创建标签之前,需要记住以下几点:
- 标签应以键值对的形式呈现。
- 标签的键由两个部分组成,分别是可选的前缀和名称,两者之间应以斜杠(/)分隔。
- 名称部分应为63个字符或更少,并且是必需的。
- 名称部分必须以字母数字字符开头和结尾,中间应使用短划线(-)、点(.)或下划线(_)分隔。
- 前缀部分是可选的。
因此,Kubernetes标签应满足以下要求:
- 名称部分应为63个字符或更少。
- 标签的名称部分不能为空。
- 前缀是可选的。
- 在创建标签时,应遵循此正则表达式:'[a-z0-9A-Z]’,并使用点、下划线和短划线分隔键的字符。
以下是在Kubernetes中创建标签的语法,供参考:
语法:
"metadata": {
"labels": {
"key1" : "value1",
"key2" : "value2",
"key3" : "value3",
"key4" : "value4",
"key5" : "value5"
}
}
为了通过标签识别资源,Kubernetes 提供了两种不同的方法。其中一种是通过标签,另一种是通过注释。在本节中,我们将讨论我们拥有的不同方法,让我们分别详细讨论它们,如下所示:
1)通过标签 2)通过注释
让我们分别详细看一下它们,如下所示:
通过标签:我们知道标签是键值对,用于表示 Kubernetes 对象,基本上它可以帮助我们识别与 Kubernetes 对象相邻的元数据,提供有关对象的相关且有意义的信息。在 Kubernetes 中,我们有支持,可以根据我们拥有的标签查询对象,我们还可以在其上应用大量操作。因此,它们经常用作我们想要在团队内共享的信息,因为它们为我们提供元数据。
通过注释:我们还有一种方法可以识别对象的元数据,即通过注释。在标签的位置上,我们可以使用“注释”。注释也是一种基于键值的结构,它帮助我们识别与对象相连的元数据。但我们不能使用注释根据注释查询对象。
让我们详细查看两种方法的语法,以便更好地理解和清晰明了,如下所示:
方法一:通过标签
语法:
"metadata": {
"labels": {
"key1" : "value1",
"key2" : "value2",
"key3" : "value3",
"key4" : "value4",
"key5" : "value5"
}
}
方法二 通过注释:
语法:
"metadata": {
"annotations": {
"key1" : "value1",
"key2" : "value2",
"key3" : "value3",
"key4" : "value4",
"key5" : "value5"
}
}
本节中,我们将着眼于 Web 应用程序特定的 Kubernetes 标签,并包括一个示例以更好地理解它,让我们开始吧,如下所示:
1)app.kubernetes.io/version:此标签用于表示应用程序的版本,我们可以说是当前版本。 2)app.kubernetes.io/instance:此标签用于唯一标识应用程序的实例。 3)app.kubernetes.io/name:通过此标签的帮助,我们可以轻松地定义应用程序的名称应始终在最上方。 4)app.kubernetes.io/created-by:此标签用于标识或定义创建资源的所有者的名称或控制器/资源的所有者。 5)app.kubernetes.io/part-of:此标签用于定义此应用程序是其一部分的更高级别应用程序的名称。 6)app.kubernetes.io/managed-by:此标签用于定义工具,此工具是管理应用程序操作的工具。 7)app.kubernetes.io/component:这也是一个重要的标签,用于帮助我们识别应用程序中使用的组件。 现在让我们更详细地看一下如何在应用程序中正确使用这些标签的示例;
apiVersion: your_api_version
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
结论
Kubernetes标签有助于识别对象的属性,因为它们可以轻松地为Kubernetes对象创建
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!