Kubernetes集群中的每个资源对象在内部都有唯一的名称和UID。
同时,为了方便管理,还提供了基于标签、注释、选择器、字段选择器、终止符、所有者引用等功能。正确理解和使用这些功能将帮助您有效地管理您的应用程序。
姓名
名称是同一类型的唯一资源。同一集群中不同类型的资源可以具有相同的名称。例如,在部署服务时,命名空间和命名空间内的服务通常具有相同的名称,并且其他命名空间中的服务也可以具有相同的名称。
名称可以重复使用,并且当删除对象时,可以创建具有相同名称的新对象。
对于同一资源,该名称在所有API版本中必须是唯一的。
/api/v1/pods/xxxx-名称
API资源通过API组、资源类型、命名空间和名称来区分。换句话说,API版本在此上下文中并不重要。
用户识别码
UID是Kubernetes系统自动生成的具有时间和空间唯一性的字符串,用于唯一标识一个对象。
UID在整个集群中是唯一的,同一个集群内,不同的资源也有不同的UID。例如,Pod和容器具有唯一的UID。
Kubernetes集群生命周期中创建的每个对象都有一个唯一的UID,用于区分相似实体的记录事件。
重建同一个资源后,即使名称相同,UID也会不同。
KubernetesUID是通用唯一标识符。
名称空间
在Kubernetes中,命名空间提供了一种将同一集群中的资源划分为相互隔离的组的机制。同一命名空间内的资源名称必须唯一,但跨命名空间则无此要求。命名空间范围仅适用于具有该命名空间的对象;此范围不适用于集群范围内的对象。
何时使用多个命名空间
命名空间非常适合跨多个团队或项目的许多用户的场景。对于只有几个到几十个用户的集群,根本不需要创建或考虑命名空间。
命名空间提供名称的范围。资源名称在命名空间内必须唯一,但跨命名空间必须唯一。命名空间不能相互重叠,每个Kubernetes资源只能存在于一个命名空间中。
命名空间是在多个用户之间划分集群资源的一种方式。
无需使用多个命名空间来区分略有不同的资源,例如同一软件的不同版本。您必须使用标签来区分同一命名空间中的不同资源。
初始命名空间
Kubernetes在启动时创建四个初始命名空间。
默认值Kubernetes包含此命名空间,因此您可以开始使用新集群,而无需创建新命名空间。
kube-node-lease此命名空间包含与每个节点关联的Lease对象。节点租约允许kubelet发送心跳,以允许控制平面检测节点故障。
kube-public所有客户端都可以读取此命名空间。该命名空间主要保留供集群使用,因此特定资源必须在整个集群中可见且可读。此命名空间中的公共属性是约定的,不是强制性的。
kube-system该命名空间用于在Kubernetes系统中创建的对象。
注意对于生产集群,不要使用默认命名空间,并考虑创建不同的命名空间来使用。
命名空间和DNS
当您创建服务时,Kubernetes会创建相应的DNS条目。
该条目的格式为svcclusterlocal。如果容器仅使用它,它将解析为本地命名空间中的服务。要访整个命名空间,您必须使用完全限定的域名。所有命名空间名称必须是合法的RFC1123DNS_LABEL。
标签
现实世界的基础设施管理通常需要跨任务,从而打破严格的分层表示的封装,特别是那些由基础设施而不是用户确定的任务。例如,服务部署和批处理管道通常是多维实体。因此,引入标签作为识别和管理的手段,允许用户以松散耦合的方式将其组织结构映射到系统对象。
与名称和UID不同,标签不支持唯一性。通常我们希望许多对象具有相同的标签。
标签是附加到资源对象的键/值对。用于指定对象的识别属性。虽然它用户友好且有意义,但它对Kubernetes核心没有直接影响,仅用作附加属性。资源对象的数量
您可以使用标签来标识资源对象。
您可以使用标签来组织和选择资源对象。
创建标签并将其附加到对象后,可以随时添加和修改标签。
每个对象可以有多组键/值标记定义。
每个键对于特定对象必须是唯一的。
标签非常灵活,可以实现多维属性标记,因此其使用必须合理规划和使用。Selector的选择功能和查询过滤功能使其成为管理资源对象的友好且有效的手段。适用于UI和CLI。
需要注意的一点是标签的键和值的格式,如下所示。
标签格式[prefix]/name:val34;accelerator:nvidia-tesla-a10034;registryk8sio/cuda-Vector-add:v01键等于环境,值等于生产或QA资源层,不是前端,带有分区标签的后端资源,执行.不关心value!partition带有分区标签的资源,不关心value、key等于environment且value不等于qa的资源同样,逗号分隔符充当AND运算符。
基于***的标签选择器是等价标签选择器的常见形式。因为Environment=生产和生产中的环境是一样的,而!=和notin是类似的。
基于***的需求可以与基于相等的需求混合。示例customerA、customerB、environment!=qa的分区。
基于***的需求更具表现力。如下
selector:matchLabels:component:redismatchExpressions:--如何有效地使用标签和选择器是一个比较多样化的题,所以稍后我会单独写一篇文章来详细解释。
注解
注释是将元数据附加到Kubernetes对象的另一种方法。虽然标签可用于选择对象并查找满足特定条件的对象***,但注释不用于识别和选择对象;它们主要用于附加对象元数据。注释中的元数据可小可大、结构化或非结构化,并且可以包含标签中不允许的字符。
注释与标签相同;它们是键/值对,并且具有字符串数据类型。
34;以下是您可以使用注释记录的一些信息示例
由声明性配置管理的字段。将这些字段附加为注释可将它们与客户端或服务器设置的默认值、自动生成的字段以及自动调整大小或自动缩放系统设置的字段区分开来。
构建、发布或镜像信息。
指向日志记录、监视、分析或审核存储库的标识符。
用于调试目的的客户端库或工具信息,例如名称、版本和构建信息。
用户或工具/系统源信息,例如其他生态系统组件中相关对象的URL。
轻量级入门工具的元数据信息,例如配置或检查点
指定在何处可以找到信息的目录条目,例如负责人的电话或寻呼机号码或团队网站。
用户修改行为或使用非标准功能的最终可执行指令。
注释的格式规范与标签相匹配。
字段选择器
“字段选择器”允许您根据一个或多个资源字段的值过滤Kubernetes对象。如今它的使用不多,但它有助于管理大量容器对象。
以下是使用字段选择器的查询的一些示例
元数据名称=我的服务
元数据命名空间!=default
状态阶段=待定
以下kubectl命令会筛选statusphase字段值为Running的所有Pod。
kubectlgetpods--field-selectorstatusphase=RunningField选择器本质上是资源“过滤器”。默认情况下,不应用字段选择器/过滤器。这意味着指定类型的所有资源都将被过滤掉。这使得两个kubectl查询kubectlgetpods和kubectlgetpods--field-selector34;相同。
不同的Kubernetes资源类型支持不同的字段选择器。所有资源类型都支持元数据名称和元数据命名空间字段。
字段选择器支持基于相等的运算符(=、==、=),但不支持***运算符。
终结者
终结器是一个带有命名空间的键,它指示Kubernetes在满足某些条件后完全删除标记为删除的资源。终结器通知控制器清理被删除对象拥有的资源。
终结器可防止意外删除集群正常运行所依赖的资源。例如,如果您尝试删除Pod仍在使用的PertantVolume,则资源不会立即删除,因为PertantVolume有kubernetesio/pv-protection终结器。相反,卷会进入终止状态,直到Kubernetes清除终结器。仅当PertantVolume不再安装在pod上时才会发生这种情况。
当您告诉Kubernetes删除指定了终结器的资源对象时,KubernetesAPI会按如下方式填充metadatadeletionTim
本文给各大网友介绍的一些关于category words和category的使用的相关内容已经详细解完毕,希望大家喜欢。
No Comment