标签
标签是一个键值对,可以给pods、复制控制器和服务打标签。标签可以用来组织和选择对象。标签可以在创建时附加到对象上,然后在任何时候添加和修改。每个对象可以定义一组键/值标签。对于给定的对象,每个键必须是唯一的。
例如,下面是一个Pod的配置文件,它有两个标签环境: environment: production
与 app: nginx
:
apiVersion: v1
kind: Pod
metadata:
name: label-demo
labels:
environment: production
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
选择器
可以使用标签选择对象。
Kubernetes API目前支持两种类型的选择器
- 基于等式的选择器 比较标签相同与否,操作符有:
==
,!=
- 基于集合的选择器 比较标签是否属于某个标签集合,操作符:
in
,notin
,exists
对象使用标签选择相关资源
一些Kubernetes对象,如服务和复制控制器,可以使用标签选择器来指定其他资源集,如pods。
apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
spec:
type: NodePort
ports:
- port: 81
targetPort: 80
nodePort: 30081
selector:
app: nginx
在上面的代码中,创建了一个服务,该服务连接到标签为app: nginx
的pods。
kubectl命令中使用标签
列出标签为environment=production,tier=frontend
的pods:
基于等式:
kubectl get pods -l environment=production,tier=frontend
基于集合:
kubectl get pods -l 'environment in (production),tier in (frontend)'
kubectl get pods -l 'environment in (production, qa)'
kubectl get pods -l 'environment,environment notin (frontend)'