Kubernetes Label 和 Annotation

2025-02-24  本文已影响0人  跑腿打杂临时工

1. Label(标签)

1.1 介绍

Label 是一组 键值对(Key-Value),用于标识、选择和组织 Kubernetes 资源对象。它们被广泛用于 查询、筛选、分组和调度 资源。

1.2 作用

1.3 示例

(1) 给 Pod 添加 Label

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  labels:
    app: my-app
    env: production
spec:
  containers:
    - name: my-app-container
      image: my-app:latest

(2) 使用 Label 选择器查询资源

(3) Service 通过 Label 选择 Pod

apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

2. Annotation(注解)

2.1 介绍

Annotation 也是一组 键值对(Key-Value),主要用于存储 Kubernetes 资源的 附加信息,不影响对象的标识或调度。

2.2 作用

2.3 示例

(1) 给 Pod 添加 Annotation

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  annotations:
    creator: "admin"
    buildTimestamp: "2024-02-25T12:00:00Z"
    monitoring: "prometheus"
spec:
  containers:
    - name: my-app-container
      image: my-app:latest

(2) Kubernetes 内部 Annotation 示例

metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Pod","metadata":{"name":"my-app"},"spec":{"containers":[{"name":"my-app-container","image":"my-app:latest"}]}}

3. Label 和 Annotation 的区别

特性 Label Annotation
用途 资源标识、选择和筛选 存储额外的元数据
是否可用于查询 ✅ 支持 kubectl get -l ❌ 不支持
影响 Kubernetes 机制 ✅ 可用于 Service、调度、自动伸缩等 ❌ 仅用于信息存储
数据结构 简单的 Key-Value 允许复杂的 Key-Value 及大数据量

4. 何时使用 Label vs Annotation

使用 Label 的情况

使用 Annotation 的情况

5. 结论

上一篇 下一篇

猜你喜欢

热点阅读