首页 > 编程语言 >k8s nodeName与nodeSelector的简单应用(转)

k8s nodeName与nodeSelector的简单应用(转)

时间:2024-05-15 10:41:16浏览次数:14  
标签:nodeName 标签 app nodeSelector nginx Deployment pod k8s 定义

原文:https://blog.csdn.net/xhredeem/article/details/127687465

作者:

来源:CSDN

默认情况下,k8s master 管理节点有污点标签,默认是NoSchedule,即不会被调度。新创建的pod 会随机选择除了master管理节点的以外的node工作节点上创建。如果想要使某个新建pod在某个node节点创建,可以使用nodeName或者nodeSelector两种方式

nodeName

这种方式适合某个pod在某台主机上创建。以nginx为例

[root@matser-0001 test]# kubectl apply -f nginx.pod.nodeName.example.yml

 

apiVersion: apps/v1                     #api版本,没什么可说的
kind: Deployment                        # 资源类型为Deployment
metadata:                              #元数据,即资源的描述
  name: nginx-deployment                #Deployment资源的名称, 可以自定义
  labels:                               #Deployment的标签定义
    app: nginx                          #Deployment的标签
spec:                                   #Deployment资源对象的核心信息
  replicas: 4                           #定义pod副本的数量为4
  selector:                             #定义标签选择器
    matchLabels:                        #定义匹配标签
      app: nginx                        #定义匹配的标签具体是谁
  template:                             #定义pod的模板
    metadata:                           #定义pod的元数据,即pod的描述信息
      labels:                           #定义pod的标签
        app: nginx                      #pod标签的具体值
    spec:                               #pod资源对象的核心信息
      containers:                      #定义容器资源
      - name: nginx                    #容器名
        image: nginx                 #容器使用的镜像
        imagePullPolicy: IfNotPresent    #镜像拉取策略,默认是Always
        ports:                           #容器端口定义
        - containerPort: 80              #暴露容器端口
      nodeName: node-0002                  # 选择在主机名为node-0002的主机上创建pod

结果显示在node-0002上创建了4个nginx pod

 

nodeSelector

这种方式适合给打上特定标签的node节点上创建pod。还是以nginx为例,给node-0001标签app=nginx

[root@matser-0001 test]# kubectl label nodes node-0001 app=nginx

[root@matser-0001 test]# kubectl

apply -f nginx.pod.nodeSelector.example.yml

 

apiVersion: apps/v1                     #api版本,没什么可说的
kind: Deployment                        # 资源类型为Deployment
metadata:                               #元数据,即资源的描述
  name: nginx-deployment                #Deployment资源的名称, 可以自定义
  labels:                               #Deployment的标签定义
    app: nginx                          #Deployment的标签
spec:                                   #Deployment资源对象的核心信息
  replicas: 4                           #定义pod副本的数量为4
  selector:                             #定义标签选择器
    matchLabels:                        #定义匹配标签
      app: nginx                        #定义匹配的标签具体是谁
  template:                             #定义pod的模板
    metadata:                           #定义pod的元数据,即pod的描述信息
      labels:                           #定义pod的标签
        app: nginx                      #pod标签的具体值
    spec:                               #pod资源对象的核心信息
      containers:                      #定义容器资源
      - name: nginx                    #容器名
        image: nginx                 #容器使用的镜像
        imagePullPolicy: IfNotPresent    #镜像拉取策略,默认是Always
        ports:                           #容器端口定义
        - containerPort: 80              #暴露容器端口
      nodeSelector:                      #定义节点标签选择
        app: nginx                       # 选择在打了标签app=nginx的主机上创建pod

结果显示pod在点node-0001上创建

 

 

标签:nodeName,标签,app,nodeSelector,nginx,Deployment,pod,k8s,定义
From: https://www.cnblogs.com/ajianbeyourself/p/18193401

相关文章

  • k8s 维护有状态服务难的问题,他解决了
        介绍:它是基于Kubernetes的云原生数据基础设施,为用户提供了关系型数据库、NoSQL数据库、向量数据库以及流计算系统的管理控制功能。可以使用提供的命令轻松部署处理数据库实例。github:https://github.com/apecloud/kubeblocks官网:https://kubeblocks.io......
  • k8s——configmap-secret-nginx实验
    简介configmapsecret一、实验环境二、实验描述三、实验1:步骤1.使用configmap投射到nginx.conf配置文件到pod里1.1需要准备nginx.conf配置文件1.2将nginx.conf内容存放到configmap里(通过文件的方式,,这样简单一点)1.3启动ngnix的pod,使用configmap里的nginx.conf配置文件2.......
  • k8s部署实时计算平台dinky1.0
    k8s部署实时计算平台dinky1.0.2源码编译IDEA编译推荐使用IDEA进行编译,因为IDEA在打开项目时会自动下载依赖,而且编译速度快,方便调试.Clone项目注意:本次直接clone的是Dinky主仓库,如果你想要二次开发/基于自己的仓库进行二次开发,请先fork项目,然后再c......
  • 【k8s】基于猪齿鱼部署相关概念辨析
    相关链接:https://golangguide.top/架构/云原生/核心知识点/k8s到底是什么.html集群命名空间NODEDeploymentpodcontainer......
  • KubeKey 部署 K8s v1.28.8 实战
    在某些生产环境下,我们仅需要一个原生的K8s集群,无需部署KubeSphere这样的图形化管理控制台。在我们已有的技术栈里,已经习惯了利用KubeKey部署KubeSphere和K8s集群。今天,我将为大家实战演示如何在openEuler22.03LTSSP3上,利用KubeKey部署一套纯粹的K8s集群。实......
  • [转帖]Java程序在K8S容器部署CPU和Memory资源限制相关设置
    https://developer.aliyun.com/article/700701  简介: 背景在k8sdocker环境中执行Java程序,因为我们设置了cpu,memory的limit,所以Java程序执行时JVM的参数没有跟我们设置的参数关联,导致JVM感知到的cpu和memory是我们k8s的worknode上的cpu和memory大小。背景在......
  • 有了k8s还需要gateway网关,nacos配置中心吗
    在Kubernetes(k8s)环境中,您可能仍然需要使用服务网关(Gateway)和配置中心如Nacos,尽管k8s本身提供了一些类似的功能。以下是一些分析:1.服务发现与注册虽然k8s通过其内置的Service资源和服务发现机制提供了服务注册和发现的功能,但在某些情况下,您可能需要更高级的动态路由和负载均衡功......
  • k8s中如何控制pod运行的节点
    在Kubernetes(K8s)中,可以通过几种方式来控制Pod运行的节点。以下是一些常用的方法:使用nodeName:在Pod的YAML定义中,你可以使用nodeName字段来指定Pod应该运行在哪个节点上。nodeName字段的值应该是目标节点的名称。如果节点不存在或者不可调度,Pod将不会被创建。使用nodeSele......
  • 3、k8s集群安全-授权
    3、k8s集群安全-授权授权模式/机制/策略通过APIServer的启动参数--authorization-mode来设置。可以指定多个授权模式--authorization-mode=Node,RBCA,Webhook多个模式按指定顺序对请求进行授权,每当一个模式拒绝请求时,请求会被转至下一个模式,直至用户授权完成,不再执行之后......
  • 2、k8s集群安全-认证
    2、k8s集群安全-认证K8S的三种级别的客户端认证方式HTTPS证书认证基于CA根证书签名的客户端身份认证方式,最严格的认证方式HTTPToken认证通过一个token来识别合法用户,token是一个很长很复杂的字符串,每个token对应一个用户名存储在APIServer能访问的文件中。当客户端发起API......