在上文《Kubernetes入门到进阶使用(三)创建资源对象模板》中我们介绍了使用yaml文件模板创建一个pod,在这个文件里面,我们设置了一部分标签:
这里的标签其实就相当于我们给某个资源对象创建的一些标记,它是由一组组key:value形式的键值对组成的,这些键值对所在的位置是:metadata.labels字段下,这里可以使一个标签,也可以使多个标签,如果是对个标签的话,示例如下:
apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp version: v1.1 spec: containers: - name: myapp-container image: busybox command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
像上面我们添加了一个version标签,当然还可以增加其他的标签,只需要顺着顺序来进行填写即可。
我们在前面介绍过,标签在kubernetes中使一个特色,主要是比如A依赖于B的话,我们可以直接在A上通过标签选择器来选择哪些标签的实例进行关联即可,例如下面我们列举一个标签选择器的实例:
apiVersion: v1 kind: Service metadata: name: web-service spec: ports: - port: 80 protocol: TCP selector: app: web version: v1.1
例如这是一个service的资源对象实例,我们在selector里面指定需要的资源对象标签必须要有:
app: web version: v1.1
此时只要满足这个标签的app对象都会被这个service给关联起来。所以这里有一个需要注意的地方,后续看到selector字段的时候,后面跟的都是标签信息。
标签除了关联引用之外,我们还可以进行搜索,里面搜索标签为:app=myapp的资源对象:
最后我们演示下使用kubectl命令操作标签的案例:
1)查看当前namespace下面的标签:
kubectl get pod --show-labels
2)查看某个namespace下面的标签
kubectl get pod -n ${namespace} --show-labels
3)给某个pod添加标签
kubectl label pod ${pod_name} -n ${namespace} ${label}
4)修改标签值
kubectl label pod ${pod_name} -n ${namespace} ${label} --overwrite
5)删除标签
kubectl label pod ${pod_name} -n ${namespace} ${label}-
注意这里最后是一个减号。
还没有评论,来说两句吧...