• k8s标签


    一、标签是什么

     标签是k8s特色的管理方式,便于分类管理资源对象。

    一个标签可以对应多个资源,一个资源也可以有多个标签,它们是多对多的关系。 

    一个资源拥有多个标签,可以实现不同维度的管理。 

    可以使用标签选择器来指定能使用哪些标签。 

    1、标签组成

    key=value

    • key:只能使用 字母 数字  _  -  . (只能以字母数字开头,不能超过63给字符)
    • value: 可以为空 只能使用 字母 数字开头

    2、定义标签

    kubectl get pods --show-labels  #查看pod所有标签信息
    kubectl get pods -l app  #过滤包含app的标签
    kubectl get pods -L app    #过滤包含app的标签及显示值
    kubectl label pods pod-demo release=canary  #给pod-demo增加标签
    kubectl label pods pod-demo release=stable --overwrite  #修改标签

     

    二、标签选择器

    给资源打上标签后,可以使用标签选择器过滤指定的标签

    标签选择器目前有两个:基于等值关系和基于集合关系

    • 等值关系操作符:=, == , !=
    #使用格式
    kubectl get pods -l run=myapp
    kubectl get pods -l run=myapp --show-labels
    kubectl get pods -l run!=client --show-labels
    • 集合关系的操作符:in,notin,exists
    #使用格式
    kubectl get pods -l "run in (client,myapp,alpha)" --show-labels   #三个值有一个匹配上都可以
    kubectl get pods -l "run notin (client,myapp,alpha)" --show-labels

    另外许多资源支持内嵌字段

    matchLabels: 直接给定建值

    matchExpressions: 基于给定的表达式来定义使用标签选择器,{key:"KEY",operator:"OPERATOR",values:[V1,V2,....]}

    操作符: in notin:Values字段的值必须是非空列表  Exists NotExists:  Values字段的值必须是空列表

     

    三、小试牛刀

    通过主机标签或者主机名,把pod部署到匹配的节点

    1、匹配符合条件的标签,部署pod

    a、给node02节点打标签,如果多个主机都有ssd标签,会随机匹配某一个

    kubectl label nodes node02.linux.com disktype=ssd   #给node02打上ssd标签
    kubectl get nodes --show-labels

    b、修改yaml文件,增加标签选择器

    [root@master manifests]# cat pod-with-nodeselector.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-nodeselector
      labels:
        env: testing
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
      nodeSelector:
        disktype: ssd

    c、创建pod,验证

    kubectl create -f pod-with-nodeselector.yaml
    kubectl get nodes -o wide

    2、通过主机名,部署pod到指定的主机

    方式一:

    [root@master manifests]# cat pod-with-nodeselector.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-nodeselector
      labels:
        env: testing
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
      nodeSelector:
        kubernetes.io/hostname: node01.linux.com

    方式二:使用sepc.nodeName

    [root@master manifests]# cat pod-with-nodeselector.yaml
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-nodeselector
      labels:
        env: testing
    spec:
      containers:
      - name: myapp
        image: ikubernetes/myapp:v1
      nodeName: node01.linux.com
     

     

  • 相关阅读:
    谈谈一些有趣的CSS题目(十四)-- 纯 CSS 方式实现 CSS 动画的暂停与播放!
    Oracle 12c CDB PDB
    sqlplus 调试存储过程
    Oracle 存储过程A
    %notfound的理解——oracle存储过程 .
    ORA-04091: table xxx is mutating, trigger/function may not see it
    JQuery Div scrollTop ScrollHeight
    JQuery JSON Servlet
    div 移动
    HTML 三角符号
  • 原文地址:https://www.cnblogs.com/chuangcc/p/10616462.html
Copyright © 2020-2023  润新知