首页 > 编程语言 >Kubernetes--Pod节点选择器nodeSelector(标签)

Kubernetes--Pod节点选择器nodeSelector(标签)

时间:2022-10-23 16:33:34浏览次数:49  
标签:Kubernetes -- 标签 节点 io Pod 选择器 ilinux

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字段直接指定目标节点。

 

标签:Kubernetes,--,标签,节点,io,Pod,选择器,ilinux
From: https://www.cnblogs.com/zhangxin9/p/16818819.html

相关文章

  • 笛卡尔树
    笛卡尔树1.权值\(\text{pos}\)满足二叉搜索树的性质,通常用序列的下标作为权值;2.权值\(\text{val}\)满足二叉堆的性质。实现方法我们考虑将元素按照键值\(k\)排序......
  • #yyds干货盘点# 动态规划专题:连续子数组最大和
    1.简述:描述给定一个长度为 的数组,数组中的数为整数。请你选择一个非空连续子数组,使该子数组所有数之和尽可能大,子数组最小长度为1。求这个最大值。输入描述:第一行为一个正......
  • k8s基础篇 pod(七)污点和容忍度
    7.1node节点亲和性node节点亲和性调度:nodeAffinity[root@k8s01~]#kubectlexplainpod.spec.affinityKIND:PodVERSION:v1RESOURCE:affinity<Object>DESCRIPTION......
  • Python 字典
    目录导航1.一个简单的字典2.添加键值对3.创建空字典4.修改字典中的值5.删除键值对6.使用get()来访问值7.遍历键值对8.遍历字典的......
  • python7
    一、创建大雁类并定义飞行方法classGeese:'''大雁类'''def__init__(self,beak,wing,claw):print("我是大雁类!我有以下特征:")print(bea......
  • 如何用命令行语句在mysql创建库
    mysql三条创建语句创建库createdatabasediarydefaultcharsetutf8mb4;创建用户createuserdiary@localhostidentifiedby'diary';或createuser'four'@'%'iden......
  • 知识体驱动设计
    知识体驱动设计如何指导你的设计,在DDD看来是领域知识驱动,但是比起DDD更提升一层的理念,应该是知识体驱动设计。第一件事,对领域进行充分的理解,其实统一语言就是为了帮......
  • python模块、异常处理、软件开发目录规范总结
    本周总结异常处理生成器模块软件开发目录1.异常处理1.1异常处理语法结构1.基本语法 try:待检测的代码(可能会出错的代码)except错误......
  • 606 Javascript_语法_与html结合方式 and 607 Javascript_语法_注释&数据类型
     Javascript_语法_与html结合方式ECMAScript:客户端脚本语言的标准1.基本语法1.与html相结合方式1、内部js;......
  • 常用命令--envsubst
    envsubst是一个非常好用的工具,尤其善于处理和环境变量相关的事务 envsubst的使用场景:通常我们需要获取某一个或者几个环境去替换系统中的某些变量,这种情况下我们只需使......