每个资源可以定义一个或者多个标签,如Deployment、Pod等,定义标签可以用来分组,或者资源匹配。
例如service就是通过标签匹配后端的Pod,然后达到负载的目的。
网上找的一些常用标签:
- 版本标签:"release" : "stable" , "release" : "canary"...
- 环境标签:"environment" : "dev" , "environment" : "production"
- 架构标签:"tier" : "frontend" , "tier" : "backend" , "tier" : "middleware"
- 分区标签:"partition" : "customerA" , "partition" : "customerB"...
- 质量管控标签:"track" : "daily" , "track" : "weekly"
? - ? ? 常用标签转自:
- 作者:半兽人
链接:https://www.orchome.com/1335 来源:OrcHome 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
标签操作
1、查看标签:
# kubectl get pod/nginx-pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-pod 1/1 Running 0 10m app=nginx,env=qa
可以看到在LABELS下有?app=nginx,env=qa 这两个标签了
2、添加标签:
第一种,命令方式
# kubectl label pod/nginx-pod release=v1.20
pod/nginx-pod labeled
查看
# kubectl get pod/nginx-pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-pod 1/1 Running 0 15m app=nginx,env=qa,release=v1.20
第二种,yaml文件
在metadata下新增labels,然后写上自己想要的标签键值对
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
env: qa
app: nginx
3、修改标签
# kubectl get pod/nginx-pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-pod 1/1 Running 0 19m app=nginx,env=qa,release=v1.20
# kubectl label pod/nginx-pod release=v1.21 --overwrite
pod/nginx-pod labeled
# kubectl get pod/nginx-pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-pod 1/1 Running 0 19m app=nginx,env=qa,release=v1.21
release=v1.20 -->?release=v1.21
3、删除标签
# kubectl get pod/nginx-pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-pod 1/1 Running 0 23m app=nginx,env=qa,release=v1.21
# kubectl label pod/nginx-pod release-
pod/nginx-pod labeled
# kubectl get pod/nginx-pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-pod 1/1 Running 0 23m app=nginx,env=qa
在key后加一个“-”减号就是删除该标签
同样集群中的node节点也有标签,增删改查和上面一样
增
kubectl label node/<nodename> env=qa
删
kubectl label node/<nodename> env
改
kubectl label node/<nodename> env=dev --overwrite
查
kubectl get node/<nodename> --show-labels
标签过滤,即查找标签为xxx的资源
查找所有node节点标签为 env=qa 的节点
# kubectl get node --show-labels -l env=qa
其他过滤表达式
表达式 | 作用 | env=qa | 等于 | env!=qa | 不等于 | 'env in (qa,dev,qc)' | 包含 | 'env notin (qa,dev,qc)' | 不包含 | 'app,env notin (dev,qc)' | 组合过滤 |
?
Service根据标签匹配Pod
# kubectl get pod/nginx-pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
nginx-pod 1/1 Running 0 23m app=nginx,env=qa
创建service yaml匹配标签为app=nginx的pod
apiVersion: v1
kind: Service
metadata:
labels:
svcname: nginx-pod-svc
name: nginx-pod-svc
spec:
ports:
- name: server
port: 8080 # service对外端口
protocol: TCP
targetPort: 80 # Pod的容器端口
selector:
app: nginx # 标签匹配
type: ClusterIP
测试:
# kubectl get svc --field-selector metadata.name=nginx-pod-svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-pod-svc ClusterIP 192.168.48.63 <none> 8080/TCP 23m
# curl 192.168.48.63:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
|