• k8s标签


    Label(标签)是Kubernetes系统中另外一个核心概念。一个Label是一个key=value的键值对,其中key与value由用户自己指定。Label可以被附加到各种资源对象上,例如Node、Pod、Service、RC等,一个资源对
    象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上。Label通常在资源对象定义时确定,也可以在对象创建后动态添加或者删除。
    我们可以通过给指定的资源对象捆绑一个或多个不同的Label来实现多维度的资源分组管理功能,以便灵活、方便地进行资源分配、调度、配置、部署等管理工作。例如,部署不同版本的应用到不同的环境
    中;监控和分析应用(日志记录、监控、告警)等。
    一些常用的Label示例如下。
    ◎ 版本标签:"release":"stable"、"release":"canary"。
    ◎ 环境标
    签:"environment":"dev"、"environment":"qa"、"environment":"production"。
    ◎ 架构标
    签:"tier":"frontend"、"tier":"backend"、"tier":"middleware"。
    ◎ 分区标签:"partition":"customerA"、"partition":"customerB"。
    ◎ 质量管控标签:"track":"daily"、"track":"weekly"。
    Label相当于我们熟悉的“标签”。给某个资源对象定义一个Label,就相当于给它打了一个标签,随后可以通过Label Selector(标签选择器)查询和筛选拥有某些Label的资源对象,Kubernetes通过这种方式实
    现了类似SQL的简单又通用的对象查询机制。Label Selector可以被类比为SQL语句中的where查询条件,例如,name=redis-slave这个Label Selector作用于Pod时,可以被类比为select *from pod where pod’s name =‘redis-slave’这样的语句。
    当前有两种LabelSelector表达式:基于等式的(Equality-based)和基于集合的(Setbased),前者采用等式类表达式匹配标签,下面是一些具体的例子。
    ◎ name=redis-slave:匹配所有具有标签name=redis-slave的资源对象。
    ◎ env!=production:匹配所有不具有标签env=production的资源对象,比如env=test就是满足此条件的标签之一。
    后者则使用集合操作类表达式匹配标签,下面是一些具体的例子。
    ◎ name in(redis-master, redis-slave):匹配所有具有标签name=redis-master或者name=redis-slave的资源对象。
    ◎ name not in(php-frontend):匹配所有不具有标签name=phpfrontend的资源对象。
    可以通过多个Label Selector表达式的组合实现复杂的条件选择,多个表达式之间用“,”进行分隔即可,几个条件之间是“AND”的关系,即同时满足多个条件

    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定向调度的特性。

    查看标签

    [root@k8s-master1 ~]# kubectl get pod  --show-labels
    NAME                   READY   STATUS      RESTARTS   AGE     LABELS
    busybox                0/1     Completed   0          18d     run=busybox
    web-5c987b8447-6b6bx   1/1     Running     0          3d19h   app=web,kkk=hello,pod-template-hash=5c987b8447
    web-5c987b8447-jndbj   1/1     Running     0          2d3h    app=web,pod-template-hash=5c987b8447

    pod打标签

    [root@k8s-master1 ~]# kubectl label pod web-5c987b8447-jndbj  release=stable
    pod/web-5c987b8447-jndbj labeled
    [root@k8s-master1 ~]# kubectl get pod  --show-labels
    NAME                   READY   STATUS      RESTARTS   AGE     LABELS
    busybox                0/1     Completed   0          18d     run=busybox
    web-5c987b8447-6b6bx   1/1     Running     0          3d19h   app=web,kkk=hello,pod-template-hash=5c987b8447
    web-5c987b8447-jndbj   1/1     Running     0          2d4h    app=web,pod-template-hash=5c987b8447,release=stable

    node打标签

    [root@k8s-master1 ~]# kubectl label node k8s-node1 environment=dev
    node/k8s-node1 labeled
    [root@k8s-master1 ~]# kubectl get node  k8s-node1 --show-labels
    NAME        STATUS   ROLES    AGE   VERSION   LABELS
    k8s-node1   Ready    <none>   39d   v1.17.5   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,environment=dev,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux

     删除标签,只需要在key后面添加减号-

    [root@k8s-master1 ~]# kubectl label node k8s-node1 environment-
    node/k8s-node1 labeled
    [root@k8s-master1 ~]# kubectl get node  k8s-node1 --show-labels
    NAME        STATUS   ROLES    AGE   VERSION   LABELS
    k8s-node1   Ready    <none>   39d   v1.17.5   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-node1,kubernetes.io/os=linux

     修改标签 在后面添加 --overwrite

    kubectl label pod web-6d4b5656bd-6vgc8 bpp=web2 --overwrite
  • 相关阅读:
    Java5 多线程实践
    ExtJS2.0实用简明教程 Border区域布局
    MySQL安装图解
    ExtJS2.0实用简明教程 组件的使用
    ExtJS2.0实用简明教程 ExtJS版的Hello
    Linux操作系统中如何安装Tomcat
    线程池的介绍及简单实现
    ExtJS2.0实用简明教程 获得ExtJS
    汽车常识全面介绍 动力系统
    MySQL 图形化管理工具介绍
  • 原文地址:https://www.cnblogs.com/caonw/p/13254296.html
Copyright © 2020-2023  润新知