kubernetes系列四之Label管理

kubernetes系列四之Label管理,第1张

目录

Label

简介

语法

创建时指定标签

查看Label 

标签选择器(Label Selector)

简介 

基于等值的标签选择器

基于集合的标签选择器 

标签选择器常用命令 

将节点打上标签

使用Nodeselector选择节点 

使用Node affinity 

 


Label 简介

标签(Label)是附在kubernetes对象(如pod,deployment等)上的键值对(key-value),可以在创建时指定,也可以在创建后指定。
Label的值本身不具备具体含义,但可以通过label来筛选对象特定的子集,便于管理。
每一个对象可以有多个标签。

"metadata": {
 "labels": {
    "key1" : "value1",
    "key2" : "value2"
  }
}

语法

标签由一组键值对构成。
Label key的组成:
Key值必须是唯一的
不得超过63个字符
可以使用前缀,使用/分隔,前缀必须是DNS子域,不得超过253个字符,系统中的自动化组件创建的label必须指定前缀,kubernetes.io/由kubernetes保留
起始必须是字母(大小写都可以)或数字,中间可以有连字符、下划线和点
Label value的组成
不得超过63个字符
起始必须是字母(大小写都可以)或数字,中间可以有连字符、下划线和点

创建时指定标签

labelpod.yaml文件创建一个pod。
在创建时指定两个label
App:busybox
Version:new

kind: Pod
apiVersion: v1
metadata:
  name: labelpod
  labels: 👍
    app: busybox
    version:new
spec:
  containers:
    - name: labelpod
      image: busybox
      args:
      - /bin/sh
      - -c
      - sleep 30000
查看Label 
#通过命令—show-labels可以查看指定对象的所有label
root@k8s-master runfile]# kubectl get pods --show-labels
NAME       READY   STATUS    RESTARTS   AGE   LABELS
labelpod   1/1     Running   0          22m   app=busybox,version=new
#同样可以使用label指令在已创建的对象上添加标签
root@k8s-master runfile]# kubectl label pods labelpod time=2019
pod/labelpod labeled
[root@k8s-master runfile]# kubectl get pods --show-labels
NAME       READY   STATUS    RESTARTS   AGE   LABELS
labelpod   1/1     Running   0          30m   app=busybox,time=2019,version=new
标签选择器(Label Selector) 简介 

标签不具备唯一性,在通常情况下,多个不同的对象有着相同的标签。
通过标签选择器,用户或客户端可以指定批量的对象进行 *** 作。标签选择器也是kubernetes的核心分组方式。
目前支持两种标签选择器,基于等值的(equality-based)和基于集合的(set-based)。

基于等值的标签选择器

Equality-based标签选择器允许用标签的key和values过滤。有三种运算符可以使用,分别是“=”,“==”和“!=”。前两种运算符同义,代表相等,后一种代表不相等。

#查看有特定标签的对象
[root@k8s-master runfile]# kubectl get pods -l time=2019 --show-labels
NAME       READY   STATUS    RESTARTS   AGE   LABELS
labelpod   1/1     Running   0          51m   app=busybox,time=2019,version=new
#查看不包括特定标签的对象
[root@k8s-master runfile]# kubectl get pods -l time!=2019 --show-labels
NAME     READY   STATUS    RESTARTS   AGE   LABELS
mypod1   1/1     Running   0          19m   
基于集合的标签选择器 
#Set-based 的标签条件允许用一组value来过滤key。支持三种 *** 作符: in , notin 和 exists(仅针对于key符号) 。
environment in (production, qa)
tier notin (frontend, backend)
partition
!partition
#两种标签选择器也可以混用,如:
partition in (customerA, customerB),environment!=qa
标签选择器常用命令 
#查看pod,并显示app标签的值
[root@k8s-master runfile]# kubectl get pod -L app
NAME                               READY   STATUS    RESTARTS   AGE   APP
mypod                              2/2     Running   0          19s   nginx
#筛选pod中标签为app=nginx的pod
[root@k8s-master runfile]# kubectl get pod -l app=nginx
NAME                               READY   STATUS    RESTARTS   AGE
mypod                              2/2     Running   0          3m1s
将节点打上标签
#将节点2打上标签
Kubectl label nodes k8s-node2 env=test
#查看节点上的env标签
[root@k8s-master runfile]# kubectl get node -L env
NAME         STATUS   ROLES    AGE   VERSION   ENV
k8s-master   Ready    master   21d   v1.14.1
k8s-node1    Ready       21d   v1.14.1
k8s-node2    Ready       21d   v1.14.1   test
#也可以使用--show-labels命令查看所有标签
Kubectl get nodes --show-labels
使用Nodeselector选择节点 

编辑yaml文件如右,创建deployment
查看pod所在节点位置,可以看到创建出来的pod都运行在Node2上。
本实验nodeselector使用的是哪一种选择器?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
      nodeSelector:
        env: test
使用Node affinity 
#继续使用上一页的yaml文件,将nodeselector替换为下图所示内容。
affinity:
        nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: env
                operator: In
                values:
                - test
#查看pod运行节点,依然全部运行在node2上
 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/927245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-17
下一篇 2022-05-17

发表评论

登录后才能评论

评论列表(0条)

保存