一、标签是什么

标签是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

k8s标签的更多相关文章

  1. k8s标签label

    1.给节点设置标签 一遍pod部署选择 kubectl label node 节点名 disktype=ssd kubectl label node master1 disktype=ssd 效果 [ ...

  2. docker+k8s基础篇三

    Docker+K8s基础篇(三) kubernetes上的资源 A:k8s上的常用资源 Pod的配置清单 A:Pod上的清单定义 B:Pod创建资源的方法 C:spec下其它字段的介绍 Pod的生命周 ...

  3. Docker学习(十一)Docker系列结束-新的开始K8S

    Docker学习(十一)Docker系列结束-新的开始K8S 标签(空格分隔): docke k8s Docker系列结束 上一篇讲到使用docker官方提供的容器编排工具docker-compose ...

  4. 一个请求过来都经过了什么?(Thrift版)

    一.背景 最初遇到这个问题是去58面试.部门领导是原同事,所以面试比较水.水到什么程度呢? 面试就是走个形式而已,不会不过的. 一面面试官就问了一个问题:“一个请求过来都经过了什么?”  剩下的全是闲 ...

  5. Linux运维博客大全

    系统 U盘安装Linux详细步骤_hanxh7的博客-CSDN博客_u盘安装linux 使用U盘安装linux系统 - lwenhao - OSCHINA 各厂商服务器存储默认管理口登录信息(默认IP ...

  6. 容器编排系统之K8s资源标签、标签选择器、资源注解

    前文我们聊到了使用k8s资源配置清单定义资源的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14132890.html:今天我们来聊下资源标签,标签选 ...

  7. k8s核心资源之:标签(label)

    简介 label是标签的意思,一对 key/value ,被关联到对象上,k8s中的资源对象大都可以打上标签,如Node.Pod.Service 等 一个资源可以绑定任意多个label,k8s 通过  ...

  8. k8s 高级调度 亲和力和反亲和力、绑定标签、污点容忍污点

    通过标签绑定 spec: nodeSelector: bigdata-node: bigdata containers: - env: pod只能运行在有bigdata-node: bigdata 标 ...

  9. K8S调度之标签选择器

    Kubernetes 调度简介 除了让 kubernetes 集群调度器自动为 pod 资源选择某个节点(默认调度考虑的是资源足够,并且 load 尽量平均),有些情况我们希望能更多地控制 pod 应 ...

随机推荐

  1. HTTP请求常见错误大全

    常见的Http请求错误提示 1xx - 信息提示这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应.100 - 继续101 - 切换协议 2xx - 成功这类状态 ...

  2. java基础知识(14)---API

    API:(Application Programming Interface,编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理 ...

  3. Linux常用的编辑保存退出命令

    Vi Vim进入编辑后退出 按ESC后 1.保存退出 :wq :x 最快捷的方法:直接按shift+zz,或者切换到大写模式按ZZ,就可以保存退出了,即是按2下大写的Z.区别::wq 强制性写入文件并 ...

  4. 10-26C#基础回顾、汇总(函数重点)

    第一部分==进制转换 重点记忆: 1.任意进制转十进制 按权展开法 p代表进制数,a/b/c...m分别代表进制数p从右往左第1位--第(n-1)位的数 公式:a*p0+b*p1+c*p2+..... ...

  5. javascript删除option选项的多种方法总结

    转自:https://blog.csdn.net/xiaoxuanyunmeng/article/details/16886505 1. JavaScript 代码如下: var oSel=docum ...

  6. Shell编程进阶 1.2 shell结构及执行

    创建一个shell脚本 mkdir shell vim first.sh #!/bin/bash ##The first test shell script. ##Written by wangsha ...

  7. DAY9-python并发之多线程理论

    一 什么是线程 在传统操作系统中,每个进程有一个地址空间,而且默认就有一个控制线程 线程顾名思义,就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程 车间负责把资源整合 ...

  8. python 爬虫 下载图片

    import os#导入操作系统模块from urllib.request import urlretrieve#下载url对应的文件from urllib.request import urlope ...

  9. c#基础 函数

    函数  就是方法 独立完成某项功能的一个个体 函数的的三个好处:1.提高代码的重用性.2.提高功能开发的效率,3.提高代码的可维护性. 函数也分为     固定功能函数, 高度抽象函数.高度抽象函数应 ...

  10. HDOJ 1164 Eddy's research

    上一篇已经讲了,但是转载别人的很乱,这里自己根据blog里面写的思路,重新写过了一个程序 #include <iostream> #include <malloc.h> #in ...