一、标签是什么

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

最新文章

  1. [Sass]局部变量和全局变量
  2. python setup.py 管理
  3. Three.js typescript definitely typed 文件
  4. JAVA多线程(二)
  5. Linux安装xwindow图形界面
  6. Sonar相关资料
  7. Android 按键式事件
  8. 【转】MIPS交叉编译环境的建立
  9. PHP抓取网络数据的6种常见方法
  10. light oj 1008 - Fibsieve`s Fantabulous Birthday
  11. Java 简单算法--排序
  12. Prime Ring Problem + nyoj 素数环 + Oil Deposits + Red and Black
  13. 给进程分配cpu核心
  14. 多条件搜索拼接Sql语句
  15. obj-c编程04:类的继承
  16. 1.Office 365系列(-)
  17. [Swift]LeetCode803. 打砖块 | Bricks Falling When Hit
  18. centos7修改默认网卡名称
  19. Mac/Ubuntu下的数据建模工具PDMan,替代PowerDesigner
  20. jvm--深入理解java虚拟机 精华总结(面试)(转)

热门文章

  1. #pragma pack 在BITMAP结构体定义中的使用
  2. PowerDesignerPDM中搜寻表名或字段名
  3. 01-16委托Func
  4. 使用matplotlib的示例:调整字体-设置刻度、坐标、colormap和colorbar等
  5. 34款Firefox渗透测试插件
  6. 1 ffmpeg介绍
  7. Codeforces 8C 状压DP
  8. go install 命令
  9. iOS UITableView制作类似QQ好友列表视图
  10. STM32 C++编程 003 USART(串口)类