资讯专栏INFORMATION COLUMN

kubernetes节点选择器

ZoomQuiet / 710人阅读

摘要:指定若干机器进行部署将节点机器按照它们的进行归类。使用选择器类似于上文的,在创建资源的文件中使用字段,如即可将指定到或上部署运行。

好久没有更新了,今天在接到一个部署任务时,要求在集群中某几个机器上部署,查了一下github,有这方面的相关文档,翻译过来记录一下,有兴趣的同学也可以直接去github看官方文档

单节点部署

单节点部署使用nodeName字段进行配置。在启动的json/yaml文件中,pod的spec结构下增加字段:"nodeName":"{nodename}"

我们可以在master上通过指令: kubectl get nodes看到集群中的slaver节点的nodeName和他们的标签,状态:

在创建pod或rc时,加入nodeName即可以指定将pod部署在指定的节点上,上图为例,json文件如:

{
    "apiVersion": "v1",
    "kind": "ReplicationController",
    "metadata": {
        "labels": {
            "name": "benchcpu"
        },
        "name": "benchcpu-controller"
    },
    "spec": {
        "replicas": 3,
        "selector": {
            "name": "benchcpu"
        },
        "template": {
            "metadata": {
                "labels": {
                    "name": "benchcpu"
                }
            },
            "spec": {
                "containers": [
                    {
                        "image": "registry.hub.huangyang.com.cn/sysbench:0.5shell",
                        "name": "sysbench",
                        "command":[
                            "./todo.sh",
                            "--num-threads=1 --forced-shutdown=1 --max-time=60 --test=cpu --cpu-max-prime=10000000 run ",
                            "0"
                        ]
                    }
                ],
                 "nodeName": "10.126.72.31"
            }
        }
    }
}

那么这个名为bench的replication controller 就会将所有的pod都部署在10.126.72.31上。

指定若干机器进行部署

将slaver节点机器按照它们的labels进行归类。使用"nodeSelector"进行选择。

管理node的标签
使用kubectl label nodes {nodename} {key=value} 进行标签的添加。如:

kubectl  label nodes 10.126.72.31 points=test

会给10.126.72.31这个节点添加一个标签:points=test

我们给31.32两台机器同时加上这个标签。

使用nodeSelector选择器
类似于上文的nodeName,在创建资源的json/yaml文件中使用nodeSelector字段,如:

{
    "apiVersion": "v1",
    "kind": "ReplicationController",
    "metadata": {
        "labels": {
            "name": "benchcpu"
        },
        "name": "benchcpu-controller"
    },
    "spec": {
        "replicas": 3,
        "selector": {
            "name": "benchcpu"
        },
        "template": {
            "metadata": {
                "labels": {
                    "name": "benchcpu"
                }
            },
            "spec": {
                "containers": [
                    {
                        "image": "registry.hub.huangyang.com.cn/sysbench:0.5shell",
                        "name": "sysbench",
                        "command":[
                            "./todo.sh",
                            "--num-threads=1 --forced-shutdown=1 --max-time=60 --test=cpu --cpu-max-prime=10000000 run ",
                            "0"
                        ]
                    }
                ],
                 "nodeSelector":{
                    "points":"test"
                 }
            }
        }
    }
}

即可将pod指定到31或32上部署运行。

需要注意

不论是nodeName,nodeSelector,还是下文提到的 node affinity,针对他们的过滤条件,即使目前没有满足过滤条件的node,master也会指派至少一个node去部署pod,因为选择器的意思是选择“可以被分配到的节点”,而不是指定“不可被分配到的节点”。

1.2中的新特性:node affinity

1.2即将出现功能更强大的选择器,但是目前已知,可以实现如: label:"points":"test"and"test2" 的多项选择(也就是选择label中"points"的value为"test" 或 "test2", 并且不止是"and",而是与或非的联合判断式),node affinity最终将会取代 node Selector。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32451.html

相关文章

  • Kubernetes 调度浅析

    摘要:与已运行相关的过滤规则负责检查待调度与上已有之间的亲和性关系。并且每个打分函数都可以配置对应的权重值,下面介绍调度器策略配置时,也会涉及权重值的配置。默认权重值是,如果觉得某个打分函数特别重要,便可以加大该权重值。 一、概述 Kubernetes 是 Google 开源的容器集群管理系统(谷歌内部:Borg),而今天要介绍的 kube-scheduler 是 k8s 系统的核心组件之一...

    ranwu 评论0 收藏0
  • 使用Kubernetes 1.2.0的正确姿势

    摘要:升级注意事项使用推荐使用,但仍然支持和。如果内核不支持,会包含一个无法使用的警告。在使用创建对象时,如果不指定,使用读取该字段会显示中指定的默认值。如果要,推荐使用中的命令。分配相关的问题。 之前,我们介绍了kubernetes 1.2.0的新特性,还不清楚的童鞋查看这里。 本文讨论的是使用 kubernetes 1.2.0 的注意事项,包括对周边组件的要求(比如docker的兼容性)...

    LucasTwilight 评论0 收藏0
  • Kubernetes 亲和性调度

    摘要:换句话说,亲和性选择节点仅在调度时起作用。先创建集群反亲和性打散各个副本再部署服务,需要打散并且与服务共存,配置如下注意需要进行大量处理,所以会明显减慢大型集群的调度时间,不建议在大于几百个节点的集群中使用该功能。 一、概述 前一篇文章 Kubernetes 调度器浅析,大致讲述了调度器的工作原理及相关调度策略。这一章会继续深入调度器,介绍下亲和性调度。 Kubernetes 支持限制...

    GT 评论0 收藏0
  • kubernetes节点选择

    摘要:指定若干机器进行部署将节点机器按照它们的进行归类。使用选择器类似于上文的,在创建资源的文件中使用字段,如即可将指定到或上部署运行。 好久没有更新了,今天在接到一个部署任务时,要求在集群中某几个机器上部署,查了一下github,有这方面的相关文档,翻译过来记录一下,有兴趣的同学也可以直接去github看官方文档 单节点部署 单节点部署使用nodeName字段进行配置。在启动的json/y...

    chuyao 评论0 收藏0
  • “千万”并发:Kubernetes 1.2v 开启谷歌级别性能之旅

    摘要:随着发布,现在能支持个节点的集群即千万请求秒,附带对大多数操作尾部这段延迟降低。的千万并发令人乍舌三个月后,将会再次带来倍的提升。 随着Kubernetes1.2v发布,K8S现在能支持1000个节点的集群(即1千万请求/秒),附带对大多数API操作(99%尾部这段)延迟降低80%。这意味着在最近的6个月内,K8S支持的容量增加了10倍同时还保证用户使用感受——99%pod启动时间少于...

    awkj 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<