Kubernetes(k8s):Pod 的 Node Selector详解

这篇具有很好参考价值的文章主要介绍了Kubernetes(k8s):Pod 的 Node Selector详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


💖The Begin💖点点关注,收藏不迷路💖

1、什么是Node Selector?

Node Selector是Kubernetes中一个用于指定Pod部署位置的重要概念。通过Node Selector,用户可以将Pod调度到具有特定标签的节点上。

这种标签通常用于区分节点的硬件配置、地理位置、网络特性等。通过合理地设置Node Selector,用户可以优化应用程序的性能、稳定性和可用性。

2、Node Selector的工作原理

Kubernetes(k8s):Pod 的 Node Selector详解,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod,Node Selector,label

Node Selector的工作原理相对简单,主要包括以下几个步骤:

1、用户为集群中的节点打上标签(Label):用户需要在Kubernetes集群中为节点打上相应的标签,以便后续将Pod调度到合适的节点上。标签可以是任意的键值对,例如zone: east、gpu: true等。

2、用户在Pod的定义中指定Node Selector:在创建Pod的时候,用户可以通过Pod的Spec部分,使用nodeSelector字段来指定Node Selector。Node Selector是一个键值对,Pod将被调度到具有匹配标签的节点上。

3、调度器进行节点选择:Kubernetes的调度器会根据Pod的Node Selector,选择具有匹配标签的节点来部署Pod。如果没有匹配的节点,则Pod将处于Pending状态,直到有合适的节点可用。

3、Node Selector的用法

1、例如:给node01 、node02 分别打上标签

给node01打上标签 zone=east 和 node02 打上标签zone=west。

# 给节点打上标签(为了演示先不给k8s-node01打标签,验证后面如果没有任何节点具有该标签,则pod会一直处于Pending状态)
kubectl label nodes k8s-node01 zone=east
kubectl label nodes k8s-node02 zone=west


## 验证标签是否已添加
kubectl get nodes --show-labels

Kubernetes(k8s):Pod 的 Node Selector详解,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod,Node Selector,label

2、使用标签调度Pod

在给节点添加了标签后,可以在Pod配置中使用nodeSelector来指定Pod应该被调度到哪些节点上。

1、例如,如果希望Pod只在zone=east的节点上运行,可以在Pod的配置文件中添加nodeSelector字段,如下所示:

vim mypod.yaml, 添加下面内容,指定  nodeSelector: zone: east
apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - name: mycontainer
    image: nginx
  nodeSelector:
    zone: east

Kubernetes(k8s):Pod 的 Node Selector详解,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod,Node Selector,label

在上面的示例中,我们创建了一个名为nginx的Pod,并指定了Node Selector为zone: east。

2、使用 kubectl apply 命令将 mypod 应用到集群。

 kubectl apply -f mypod.yaml

Kubernetes(k8s):Pod 的 Node Selector详解,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod,Node Selector,label

3、查看所有pod

kubectl get pods

Kubernetes(k8s):Pod 的 Node Selector详解,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod,Node Selector,label
4、给k8s-node01节点打上zone: east标签

kubectl label nodes k8s-node01 zone=east

5、再次查看所有pod

kubectl get pods

Kubernetes(k8s):Pod 的 Node Selector详解,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod,Node Selector,label

这意味着该Pod将被调度到具有zone: east标签的节点上,如果没有任何节点具有该标签,则pod会一直处于Pending状态,直到符合要求的节点出现为止。

3、删除节点的标签

可以使用 kubectl label 命令并将要删除的标签键的值设置为空字符串。以下是如何删除节点 k8s-node01 上的 zone 标签的示例:

kubectl label nodes k8s-node01 zone-

Kubernetes(k8s):Pod 的 Node Selector详解,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod,Node Selector,label

同样地,你也可以通过相同的方式删除 k8s-node02 上的标签:

kubectl label nodes k8s-node02 zone-

通过将标签的值设置为空字符串来实现标签的删除。

Kubernetes(k8s):Pod 的 Node Selector详解,# Kubernetes,容器化与编排技术深度解析,kubernetes,容器,云原生,Pod,Node Selector,label文章来源地址https://www.toymoban.com/news/detail-844738.html


💖The End💖点点关注,收藏不迷路💖

到了这里,关于Kubernetes(k8s):Pod 的 Node Selector详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【云原生 | Kubernetes 系列】K8s 实战 如何给应用注入数据 II 将pod数据传递给容器

    在上一篇文章中,我们学习了针对容器设置启动时要执行的命令和参数、定义相互依赖的环境变量、为容器设置环境变量,三种设置方式,本篇文章,我们将继续学习数据的传递。 有两种方式可以将 Pod 和 Container 字段传递给运行中的容器: 环境变量 卷文件 这两种呈现 Pod

    2024年01月25日
    浏览(141)
  • 云原生 黑马Kubernetes教程(K8S教程)笔记——第一章 kubernetes介绍——Master集群控制节点、Node工作负载节点、Pod控制单元

    参考文章:kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念、组件和工作原理。 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为

    2024年02月04日
    浏览(56)
  • 容器化进阶Kubernetes(K8S)详解

    1.1.1 Kubernetes是什么及作用 Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。 Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 官网地址 Kubernetes 中文社区 Kubernetes(k8s)中文文档 目录_Kubernetes中文社

    2024年02月05日
    浏览(77)
  • 【Kubernetes】K8s 查看 Pod 的状态

    NAME :Pod 的名称。 READY :代表 Pod 里面有几个容器,前面是启动的,后面是总数, 1 / 1 1/1 1/1 。 STATUS :就是当前 Pod 状态,最常见的就是 Running 正在运行,最期望的状态,只要不是 Running 的就说明有问题,就算是 Running 的就不一定没有问题。 状态 说明 Pending 挂起 在执行创建

    2024年01月15日
    浏览(96)
  • k8s 多容器pod进入指定容器

    kubectl exec -it prometheus-prometheus-server-697cccff9c-qtrf7 -c prometheus-server sh

    2024年02月14日
    浏览(62)
  • K8S | 容器和Pod组件

    对比软件安装和运行; 作为研发人员,通常自己电脑的系统环境都是非常复杂,在个人的习惯上,是按照下图的模块管理电脑的系统环境; 对于「基础设施」、「主机操作系统」、「系统软件」来说,通常只做配置修改; 对于自行安装的软件环境来说,个人通常这样分类:

    2024年02月11日
    浏览(57)
  • kubernetes(k8s) pod(资源限制、基础概念)

    目录  一、资源限制 1、概念 1.2、Pod和容器的资源请求和限制 1.3、CPU资源单位 1.4、内存资源单位 1.5、CPU和内存的Requests和Limits的特点 1.6、案例 二、pod 的两种使用方式 三、pod 资源共享 四、底层容器Pause 1、pause 共享资源 1.1、网络 1.2、存储 1.3、小结 2、Pause主要功能 3、Pod

    2024年02月05日
    浏览(76)
  • k8s 维护node与驱逐pod

    1.维护node节点 设置节点状态为不可调度状态,执行以下命令后,节点状态会多出一个SchedulingDisabled的状态,即新建的pod不会往该节点上调度,本身存在node中的pod保持正常运行 kubectl cordon k8s-node01 kubectl get node 2.驱逐pod 在node节点设置为不可调度状态后,就可以开始驱逐本节点

    2024年02月06日
    浏览(53)
  • K8S 设置node最大pod数量

    1.默认情况下k8s 一个node最多起110个pod 2.在node上设置打开文件/var/lib/kubelet/config.yaml 3.修改参数maxPods为指定的值(例子为180) 4.node端重启kubelet: systemctl restart kubelet 5.查看kht125节点上支持的最大pod数量: kubectl describe node kht125 | grep -i \\\"Capacity|Allocatable\\\" -A 6 6.如果以上方法不生效,

    2024年02月07日
    浏览(41)
  • k8s pod 容器间测试接口

    1、配置k8s 详细的配置参考官网 2、获取pod节点PODID信息 3、进入到pod容器内部 4、安装CURL 5、调用测试接口 6、查看调用工程的Pod的日志

    2024年02月12日
    浏览(216)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包