龙空技术网

《蹲坑学K8s》之17-19:Label(标签)

DoDo在线 145

前言:

当前大家对“label标签用法c”大体比较珍视,我们都需要剖析一些“label标签用法c”的相关内容。那么小编也在网上网罗了一些有关“label标签用法c””的相关文章,希望同学们能喜欢,同学们一起来了解一下吧!

Label是Kubernetes系统中另外一个核心概念。一个Label是一个key=value的键值对,其中key与vaue由用户自己指定。Label可以附加到各种资源对象上,例如Node、Pod、Service、RC等,一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去,Label通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。

我们可以通过指定的资源对象捆绑一个或多个不同的Label来实现多维度的资源分组管理功能,以便于灵活、方便地进行资源分配、调度、配置、部署等管理工作。

Label相当于我们熟悉的“标签”,给某个资源对象定义一个Label,就相当于給它打了一个标签,随后可以通过Label Selector(标签选择器)查询和筛选拥有某些Label的资源对象,Kubernetes通过这种方式实现了类似SQL的简单又通用的对象查询机制。

Label Selector在Kubernetes主要使用场景有以下几种:

1、kube-controller进程通过资源对象RC上定义都Label Selector来筛选要监控的Pod副本的数量,从而实现Pod副本的数量始终符合预期设定的全自动控制流程。

2、kube-proxy进程通过Service的Label Selector来选择对应的Pod,自动建立起每个Service到对应Pod的请求转发路由表,从而实现Service的智能负载均衡机制。

3、通过对某些Node定义特定的Label,并且在Pod定义文件中使用NodeSelector这种标签调度策略,kube-scheduler进程可以实现Pod“定向调度”的特性。

案例一:为Pod创建Service

[root@k8s-master-1 ~]# vim label-test.yaml添加:apiVersion: v1kind: Podmetadata:  name: nginx  labels:                            ##标签    doo: doo                     ##定义键值对spec:  containers:    - name: nginx      image: nginx:1.16      ports:        - containerPort: 80---apiVersion: v1kind: Servicemetadata:  name: nginxspec:  type: NodePort  selector:                         ##标签选择器    doo: doo                      ##选择标签为doo: doo的资源  ports:  - name: http    port: 80targetPort: 80
[root@k8s-master-1 ~]# kubectl get pod
[root@k8s-master-1 ~]# kubectl get svc

访问资源

案例二:为deployment创建service

[root@k8s-master-1 ~]# vim label-dep-svc-test.yaml添加:apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx  labels:                            ##定义deployment标签    loo: loo                       ##定义标签键值对spec:  selector:                         ##标签选择器    matchLabels:              ##定义一组Label      joo: joo                   ##选择Pod标签  replicas: 2  template:    metadata:      labels:                     ##Pod标签        joo: joo                ##标签键值对    spec:     containers:     - name: nginx       image: nginx:1.16       ports:       - name: http         containerPort: 80---apiVersion: v1kind: Servicemetadata:  name: nginx  labels:                            ##定义Service标签    koo: koo                     ##定义标签键值对spec:  type: NodePort  selector:                        ##标签选择器    joo: joo                       ##选择Pod标签  ports:  - name: http    port: 80targetPort: 80
[root@k8s-master-1 ~]# kubectl apply -f label-dep-svc-test.yaml
[root@k8s-master-1 ~]# kubectl get pod
[root@k8s-master-1 ~]# kubectl get svc

访问资源

案例三:通过nodeSelector配置项实现pod部署至指定node节点

1、创建标签

[root@k8s-master-1 ~]# kubectl label nodes k8s-node-1 test=dodo –overwrite

查看标签

[root@k8s-master-1 ~]# kubectl get nodes --show-labels

删除标签

[root@k8s-master-1 ~]# kubectl label nodes k8s-node-1 test- --overwrite

2、创建资源

[root@k8s-master-1 ~]# vim label-dep-svc-test.yaml修改:apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx  labels:    loo: loospec:  selector:    matchLabels:      joo: joo  replicas: 2  template:    metadata:      labels:        joo: joo    spec:     containers:     - name: nginx       image: nginx:1.16       ports:       - name: http         containerPort: 80     nodeSelector:                  ##定义node选择器       test: dodo                    ##选择标签键值---apiVersion: v1kind: Servicemetadata:  name: nginx  labels:    koo: koospec:  type: NodePort  selector:    joo: joo  ports:  - name: http    port: 80targetPort: 80

[root@k8s-master-1 ~]# kubectl get pod -o wide
[root@k8s-master-1 ~]# kubectl get svc

标签: #label标签用法c