一、前言¶
本文主要以下几方面介绍k8s中的标签-label:
- 什么是标签
- 标签的语法
- 标签的作用是什么
- 标签如何使用
- 标签如何结合标签选择器使用
本文主要以下几方面介绍k8s中的亲和力-Affinity:
- 什么是亲和力
- 亲和力出现背景
- 亲和力分类
- 亲和力使用场景
- 亲和力配置详解
- 拓扑域TopologyKey详解
二、什么是标签¶
标签(Labels) 是附加到 Kubernetes对象(比如 Pod)上的键值对。 标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义。 标签可以用于组织和选择对象的子集。标签可以在创建时附加到对象,随后可以随时添加和修改。 每个对象都可以定义一组键/值标签。每个键对于给定对象必须是唯一的。
三、标签的语法¶
标签是键值对。有效的标签键有两个段:可选的前缀和名称,用斜杠(/)分隔。 名称段是必需的,必须小于等于 63 个字符,以字母数字字符([a-z0-9A-Z])开头和结尾, 带有破折号(-),下划线(_),点( .)和之间的字母数字。 前缀是可选的。如果指定,前缀必须是 DNS 子域:由点(.)分隔的一系列 DNS 标签,总共不超过 253 个字符, 后跟斜杠(/)。
如果省略前缀,则假定标签键对用户是私有的。 向最终用户对象添加标签的自动系统组件(例如 kube-scheduler、kube-controller-manager、 kube-apiserver、kubectl 或其他第三方自动化工具)必须指定前缀。
kubernetes.io/ 和 k8s.io/ 前缀是为 Kubernetes 核心组件保留的。
有效标签值:
- 必须为 63 个字符或更少(可以为空)
- 除非标签值为空,必须以字母数字字符(
[a-z0-9A-Z])开头和结尾 - 包含破折号(
-)、下划线(_)、点(.)和字母或数字
例如,以下是一个清单 (manifest),适用于具有 environment: production 和 app: nginx 这两个标签的 Pod:
apiVersion: v1
kind: Pod
metadata:
name: label-demo
labels:
environment: production
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
四、标签的作用是什么¶
标签就是为了节点标明属性,用于区分不同的节点。