1分钟搞懂K8S中的NodeSelector

文章目录

NodeSelector是什么?

NodeSelector 是 Kubernetes 中的一个概念,它允许用户通过标签选择器(label selectors)来指定 Pod 应该被调度到哪些节点上运行。这一机制为Pod的调度提供了灵活性,使得用户可以根据节点的标签属性来控制Pod的分布。

为什么使用NodeSelector?

  • 通过NodeSelector,我们可以指定固定节点运行服务
  • 解决PV ReadWriteOnce情况下,不影响项目运行情况下,实现节点调度

怎么用NodeSelector?

  • 在使用NodeSelector之前,首先需要在目标节点上设置标签。标签是键值对,用于描述节点的特征
  • 在Pod的定义文件(YAML或JSON)中,可以通过.spec.nodeSelector字段来设置NodeSelector。
  • Pod将会被调度到至少有一个标签满足NodeSelector中所有指定条件的节点上。
POD配置示例
复制代码
   apiVersion: v1
   kind: Pod
   metadata:
     name: my-pod
   spec:
     nodeSelector:
       kubernetes.io/hostname: uat-xxxxx # 关键代码
     containers:
     - name: my-container
       image: my-image
yaml配置示例
复制代码
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      nodeSelector:        # 节点选择器
        kubernetes.io/hostname: uat-xxxxx # 关键代码
      containers:
      - name: my-container
        image: my-image

如何知道K8S上面有哪些节点,每个节点都有什么信息呢?

1. 使用kubectl命令行工具查看所有节点及其标签

使用以下命令可以列出集群中所有节点的信息,并显示它们的标签:

复制代码
kubectl get nodes --show-labels

这条命令会返回一个表格,列出每个节点的名称、状态以及它们所携带的所有标签。

2. 使用kubectl命令行工具查看特定节点的标签
复制代码
kubectl describe node NODE_NAME
代码举例

假设你想要查看名为k8s-node-1的节点标签,可以执行:

复制代码
kubectl describe node k8s-node-1


常见的NodeSelector节点标签有哪些?

区域和可用区标签:
地区标签:
硬件和能力标签:
硬件类型:
特性标签:
自定义标签:
  • 用户可以根据需要自定义标签,如 disktype: ssd 或 gpu: true,来标识节点是否具备SSD硬盘或GPU等特定硬件。

其他常见问题

与亲和性与反亲和性区别是什么呢?
  • NodeSelector 提供了基本的调度控制
  • 节点亲和性(nodeAffinity)和反亲和性(nodeAntiAffinity)是更高级的调度规则,它们不仅支持基于标签的选择,还支持更复杂的逻辑表达,比如集合操作、硬软限制等,提供了更细粒度的控制。

结语

  • 今天就写到这里啦~
  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~

学无止境,合作共赢

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~
相关推荐
风落无尘7 小时前
Stable Diffusion WebUI & ComfyUI 完整安装教程:官方部署+一键整合包+Docker容器化(2026最新)
docker·容器·stable diffusion
CodeMartain11 小时前
Dify Windows 原生部署(无 Docker、纯本地)
运维·docker·容器
牛奶咖啡1312 小时前
k8s容器编排技术实践——使用containerd作为容器运行时部署k8s集群
kubernetes·k8s的安装部署·开启系统的ipvs支持·安装containerd·containerd配置加速器·安装k8s的工具·安装calico网络插件
万里侯12 小时前
云原生数据备份与恢复:保障数据安全的最佳实践
微服务·容器·k8s
llrraa201013 小时前
配置docker国内镜像源
运维·docker·容器
阿里云云原生13 小时前
阿里云 STAROps 全域智能运维平台发布!从“被动救火”到“主动自治”
云原生
2301_7807896614 小时前
手游遇到攻击为什么要用SDK游戏盾手游遇到攻击为什么要用 SDK 游戏盾?
安全·web安全·游戏·架构·kubernetes·ddos
35岁程序员的自救之路14 小时前
AiBBS - 面向下一个十年的AI + 云原生社区系统
人工智能·云原生
珂玥c15 小时前
k8s集群ingress碎碎念
云原生·容器·kubernetes
佳杰云星15 小时前
如何给大模型集群选“大脑”?智算调度与管理平台 10 维选型指南(附选型评分表)
人工智能·kubernetes·大模型·云计算·gpu·算力调度·智算中心