k8s通过label来控制pod的位置

默认情况下,scheduler会将pod调度到所有可用的Node,不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Node;或者 Pod 需要 GPU,需要运行在配置了 GPU 的节点上。

kubernetes通过label来实现这个功能

label 是 key-value 对,各种资源都可以设置 label,灵活添加各种自定义属性。比如执行如下命令标注 k8s-node1 是配置了 SSD 的节点

首先我们给k8s-node1节点打上一个ssd的标签

kubectl label node k8s-node1 disktype=ssd

通过 kubectl get node --show-labels

disktype=ssd 已经成功添加到 k8s-node1,除了 disktype,Node 还有几个 Kubernetes 自己维护的 label。

有了自定义的disktype=ssd 这个标签,只需要在配置文件中定义 nodeselector 为这个自定义标签,就可以指定pod在k8s-node1中运行

部署deployment验证

全部 6 个副本都运行在 k8s-node1 上,符合我们的预期。

要删除 label disktype,执行如下命令:

kubectl label node k8s-node1 disktype-

node/k8s-node1 labeled

不过删除标签 并不会重新部署,所以pod依旧是在k8s-node1上。

要想让k8s-node2也参与到工作负载,则必须删掉当前的deployment,并删除或注释掉配置文件中的 nodeSelector配置。

我们看到之前的pod会被全部删除掉,并重新调度到不同的k8s节点上。

原文地址:https://www.cnblogs.com/benjamin77/p/9901912.html

时间: 2024-08-30 17:40:57

k8s通过label来控制pod的位置的相关文章

k8d创建资源(3)(负载均衡原理,回滚指定版本,label控制pod的位置)

Deployment介绍 Deployment是kubernetes 1.2引入的概念,用来解决Pod的编排问题.Deployment可以理解为RC的升级版(RC+Reolicat Set).特点在于可以随时知道Pod的部署进度,即对Pod的创建.调度.绑定节点.启动容器完整过程的进度展示. 使用场景 创建一个Deployment对象来生成对应的Replica Set并完成Pod副本的创建过程.检查Deployment的状态来确认部署动作是否完成(Pod副本的数量是否达到预期值).更新Deplo

用 label 控制 Pod 的位置 - 每天5分钟玩转 Docker 容器技术(128)

默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Node:或者 Pod 需要 GPU,需要运行在配置了 GPU 的节点上. Kubernetes 是通过 label 来实现这个功能的. label 是 key-value 对,各种资源都可以设置 label,灵活添加各种自定义属性.比如执行如下命令标注 k8s-node1 是配置了 SSD 的节点. k

使用JS控制页面元素位置移动

主要使用一下两个函数 parseInt() substr() 首先获取元素的ID var j = document.getElementById("ID"); 然后获取位置属性 var top = j.style.top //这里以控制元素上下位置距离,控制左右的话把top换成left即可 需要注意的是,使用此方法需要把要移动的元素设置为绝对定位,样式中添加    position:absolute; 现在开始移动元素位置了,因为使用方法获取的元素应该为(“0px”)为string字符

winform中,如何控制控件位置随窗体的大小改变而改变

winform中,如何控制控件位置随窗体的大小改变而改变 有如下3种方法: 方法1 [csharp] view plaincopy using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace MarkPrint

JS控制滚动条的位置

控制滚动条的位置: window.scrollTo(x,y); 竖向滚动条置顶(window.scrollTo(0,0); 竖向滚动条置底 window.scrollTo(0,document.body.scrollHeight) JS控制TextArea滚动条自动滚动到最下部 document.getElementByIdx_x('textarea').scrollTop = document.getElementByIdx_x('textarea').scrollHeight

“Win10 UAP 开发系列”之 在MVVM模式中控制ListView滚动位置

这个扩展属性从WP8.1就开始用了,主要是为了解决MVVM模式中无法直接控制ListView滚动位置的问题.比如在VM中刷新了数据,需要将View中的ListView滚动到顶部,ListView只有一个ScrollIntoView()方法可以控制滚动的位置,但最好在VM中不要出现直接控制View的代码,需要通过其他的方式. 使用一个扩展属性即可实现: /// <summary> /// 将ListView滚动到顶部 使用方法:在ListView增加扩展属性 /// ext:ListViewSc

深入玩转K8S之利用Label控制Pod位置

首先介绍下什么是Label? Label是Kubernetes系列中一个核心概念.是一组绑定到K8s资源对象上的key/value对.同一个对象的labels属性的key必须唯一.label可以附加到各种资源对象上,如Node,Pod,Service,RC等. 通过给指定的资源对象捆绑一个或多个不用的label来实现多维度的资源分组管理功能,以便于灵活,方便地进行资源分配,调度,配置,部署等管理工作. 默认配置下,Scheduler 会将 Pod 调度到所有可用的 Node.不过有些实际情况我们

用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)

上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode.无论采用 global mode 还是 replicated mode,副本运行在哪些节点都是由 Swarm 决定的,作为用户我们有没有可能精细控制 Service 的运行位置呢? 答案是:能,使用 label. 逻辑分两步: 为每个 node 定义 label. 设置 service 运行在指定 label 的 node 上. label 可以灵活描述 node 的属性,其形式是 ke

LaTeX 控制图片的位置

加感叹号来忽略“美学”标准. \begin{figure}[!htb] \usepackage{float}\begin{figure}[H]插到你代码相应的位置. 1,插入并列的子图 \usepackage{subfigure} \begin{figure}[H]\centering\subfigure[SubfigureCaption]{\label{Fig.sub.1}\includegraphics[width=0.4\textwidth]{figurename.eps}}\subfig