删除|23 个必知必会的 Kubernetes 高频面试题( 五 )

  • 使用空值的标签选择器 , 意味着每个资源对象都被选中(如:标签选择器的键是“A” , 两个资源对象同时拥有A这个键 , 但是值不一样 , 这种情况下 , 如果使用空值的标签选择器 , 那么将同时选中这两个资源对象)
  • 空的标签选择器(注意不是上面说的空值 , 而是空的 , 都没有定义键的名称) , 将无法选择出任何资源;
  • 在基于集合的选择器中 , 使用“In”或者“Notin”操作时 , 其values可以为空 , 但是如果为空 , 这个标签选择器 , 就没有任何意义了 。
    两种标签选择器类型(基于等值、基于集合的书写方法):
    selector:  
      matchLabels:           #基于等值
        app: nginx  
      matchExpressions:         #基于集合
        - {key: nameoperator: Invalues: [zhangsanlisi
         #key、operator、values这三个字段是固定的
        - {key: ageoperator: Existsvalues:   #如果指定为exists , 那么values的值一定要为空

    12、 常用的标签分类有哪些?标签分类是可以自定义的 , 但是为了能使他人可以达到一目了然的效果 , 一般会使用以下一些分类:
    • 版本类标签(release):stable(稳定版)、canary(金丝雀版本 , 可以将其称之为测试版中的测试版)、beta(测试版);
    • 环境类标签(environment):dev(开发)、qa(测试)、production(生产)、op(运维);
    • 应用类(app):ui、as、pc、sc;
    • 架构类(tier):frontend(前端)、backend(后端)、cache(缓存);
    • 分区标签(partition):customerA(客户A)、customerB(客户B);
    • 品控级别(Track):daily(每天)、weekly(每周) 。
    13、 有几种查看标签的方式?答:常用的有以下三种查看方式:
    [root@master ~
    # kubectl get pod --show-labels    #查看pod , 并且显示标签内容  
    [root@master ~
    # kubectl get pod -L envtier      #显示资源对象标签的值  
    [root@master ~
    # kubectl get pod -l envtier      #只显示符合键值资源对象的pod , 而“-L”是显示所有的pod  

    14、 添加、修改、删除标签的命令?#对pod标签的操作
    [root@master ~
    # kubectl label pod label-pod abc=123     #给名为label-pod的pod添加标签  
    [root@master ~
    # kubectl label pod label-pod abc=456 --overwrite       #修改名为label-pod的标签  
    [root@master ~
    # kubectl label pod label-pod abc-             #删除名为label-pod的标签  
    [root@master ~
    # kubectl get pod --show-labels  
       
    #对node节点的标签操作
    [root@master ~
    # kubectl label nodes node01 disk=ssd      #给节点node01添加disk标签  
    [root@master ~
    # kubectl label nodes node01 disk=sss –overwrite    #修改节点node01的标签  
    [root@master ~
    # kubectl label nodes node01 disk-         #删除节点node01的disk标签