前言:
当前大家对“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