Pod节点选择器是标签及标签选择器的一种应用,它能够让Pod对象基于集群中工作节点的标签来挑选倾向运行的目标节点。

Kubernetes的kube-scheduler守护进程负责在各工作节点中基于系统资源的可用性等标签挑选一个来运行待创建的Pod对象,默认的调度器是default-scheduler。Kubernetes可将所有工作节点上的各系统资源抽象成资源池统一分配使用,因此用户无须关心Pod对象的具体运行位置也能良好工作。不过,事情总有例外~比如仅有部分节点拥有被Pod对象依赖到的特殊硬件设备的情况,如GPU和SSD等。即便如此,用户也不应该静态指定Pod对象的运行位置,而是让scheduler基于标签和标签选择器为Pod挑选匹配的工作节点。

Pod对象的spec.nodeSelector可用于定义节点标签选择器,用户事先为特定部分的Node资源对象设定好标签,而后配置Pod对象通过节点标签选择器进行匹配检测,从而完成节点亲和性调度。

为Node资源对象附加标签的方法同Pod资源,使用“kubectl label nodes/NODE”命令即可。例如可为node01.ilinux.io和node03.ilinux.io节点设置“disktype=ssd”标签以标识其拥有SSD设备:

kubectl label nodes node01.ilinux.io disktype=ssd
node "node01.ilinux.io" labeled
kubectl label nodes node03.ilinux.io disktype=ssd
node "node03.ilinux.io" labeled

  查看具有键名SSD的标签的Node资源:

kubectl get  nodes -l 'disktype' -L disktype
NAME STATUS ROLES AGE VERSION DISKTYPE
node01.ilinux.io Ready <none> 103d v1.20.9 ssd
node03.ilinux.io Ready <none> 103d v1.20.9 ssd

  如果某Pod资源需要调度至这些具有SSD设备的节点之上,那么只需要为其使用spec.nodeSelector标签选择器即可,例如下面的资源清单文件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

  

将如上资源清单中定义的Pod资源创建于集群中,通过查看其运行的结点即可判定调度效果。

另外,动手测试和查看过节点标签大家或许已经注意到了,集群中的每个节点默认已经附带了多个标签,如kubernetes.io/hostname、 beta.kubernetes.io/os 和beta.kubernetes.io/arch 等。这些标签也可以直接由nodeSelector使用,尤其是希望将Pod调度至某特定节点时,可以使用kubernetes.io/hostname 直接绑定至相应的主机即可。不过,这种绑定至特定主机的需求还有一种更为简单的实现方式,即使用spec.nodeName字段直接指定目标节点。

 

最新文章

  1. Hibernate框架之Criteria查询 和注解(重点☆☆☆☆☆,难点☆☆☆)
  2. C++中Cstring、wstring 和string互相转换总结
  3. Java 中文字符串编码之GBK转UTF-8
  4. 基于percona 5.7的xtrabackup实践
  5. iOS 设置navigationBar背景
  6. R(一): R基础知识
  7. RHEL7-使用Apache服务部署静态网站
  8. mvvm结构中数据的关联----wpf
  9. Swift 结构体和类
  10. 【BBST 之伸展树 (Splay Tree)】
  11. CSS截取字符串
  12. ReactiveCocoa源码解析(二) Bag容器的代码实现
  13. Java 8的新特性—终极版
  14. 第一课:Hadoop集群环境搭建
  15. 欢迎使用IdentityModel文档!- IdentityModel 中文文档(v1.0.0)
  16. oc 语法基础
  17. MySQL数据库有哪些安全相关的参数需要修改?
  18. android -------- OkGo (让网络请求更简单的框架)
  19. RDLC 主从报表筛选
  20. wqCms6.0在IIS6的Getshell

热门文章

  1. 前端知识点(js部分)
  2. 【一句话】CAP原则
  3. Spring事务失效原因分析解决
  4. 【vite】踩坑,首次点击路由跳转页面,发生回退,页面闪回,二次点击才能进入目标页面
  5. Winform 程序多开
  6. CF1638E Colorful Operations
  7. 单词检索(search)
  8. [TJOI2007]书架
  9. JZOJ 4213. 【五校联考1day2】对你的爱深不见底
  10. Os-hackNos