kubernetes Pod 调度到指定的 Node
来源:互联网 发布:域名ip地址查询 编辑:程序博客网 时间:2024/06/05 04:01
我们知道,kubernetes 的 Scheduler 服务(kube-scheduler进程)负责实现 Pod 的调度,整个调度过程通过执行一系列的算法最终为每个 Pod 计算出一个最佳的目标节点,这一过程是自动完成的,我们无法知道 Pod 最终会被调度到哪个节点上。有时我们可能需要将 Pod 调度到一个指定的 Node 上,此时,我们可以通过 Node 的标签 (Label)和Pod 的 nodeSelector 属性相匹配,来达到上述目的。
首先,我们可以通过 kubectl label 命令给目标 Node 打上一个特定的标签,下面是此命令的完整用法:
kubectl label nodes <node-name> <label-key>=<label-value>
这里,我们为kubernetes-minion1 节点上打上一个 zone=north 的标签,表明它是 “北方”的一个节点:
$ kubectl label nodes kubernetes-minion1 zone=north
NAME LABELS STATUS
kubernetes-minion1 kubernetes.io/hostname=kubernetes-minion1,zone=north Ready
上述命令操作也可以通过修改资源定义文件的方式,并执行 kubectl replace -f xxx.yaml 命令来完成。
然后,在 Pod 的配置文件中加入 nodeSelector 定义,以 redis-master0controller.yaml 为例:
apiVersion: v1
kind: ReplicationController
metadata:
name: redis-master
lables:
name: redis-master
spec:
replicas: 1
selector:
name: redis-master
template:
metadata:
lables:
name: redis-master
spec:
containers:
- name: master
images: kubeguide/redis-master
ports:
- containerPort: 6379
nodeSelector:
zone: north
运行 kubectl create -f 命令创建 Pod,scheduler 会将该 Pod 调度到拥有 zone=north 标签的 node 上去。
使用 kubectl get pods -o wide
$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE NODE
redis-master-1 1/1 Running 0 18s kubernetes-minion1
如果我们给多个 Node 都定义了相同的标签(如 zone=north),则scheduler 将会根据调度算法从这组 Node 中 挑选一个可用的 Node 进行Pod 调度。
这种基于 Node 标签的调度方式灵活性很高,比如我们可以把一组 Node 分别贴上 “开发环境” “测试环境” “用户验收环境” 这三组标签中的一种,此时一个 kubernetes集群就承载了3个环境,这将大大提高开发效率。
需要注意的是,如果我们指定了 Pod 的 nodeSelector 条件,且集群中不存在包含相应标签的 Node时,即使还有其他可供调度的 Node,这个 Pod 也最终会调度失败。
- kubernetes Pod 调度到指定的 Node
- Kubernetes之Pod调度
- Kubernetes之Pod调度
- Kubernetes Scheduler 调度- Node信息管理
- Kubernetes的Pod网络设置
- kubernetes--pod的生命周期管理
- kubernetes 通过annotations指定调度节点
- Kubernetes 多container组成的Pod
- 将Node.js项目docker容器化并纳入kubernetes调度编排的实践
- Kubernetes单Pod操作
- Kubernetes组件之Pod
- kubernetes之Pod详解
- Kubernetes之Pod详解
- Kubernetes 1.6 伸缩性升级:5000 Node 和 15 万个 Pod
- kubernetes集群使用kubectl logs 无法查看node节点pod日志问题
- 定位“kubernetes pod卡在ContainerCreating状态”问题的方法
- 简单的 Kubernetes Pod 日志查看工具 Kubetail
- pod update 指定需要update 的 库
- Map集合
- [Oracle 11g r2(11.2.0.4.0)]案例分析7-丢失本地心跳导致的集群重新配置
- 浅谈KMP算法
- C++风格_类
- 洛谷P2661 信息传递 (NOIp2015)
- kubernetes Pod 调度到指定的 Node
- 批量doc转docx的两种方法--Office Migration Planning Manager使用、插件使用
- Kotlin类和对象(二)——属性和字段
- 正则表达式(记忆口诀)
- Android 源码在线查看地址
- Android7.0的相机调用和适配适配
- @AspectJ语法基础之切点表达式函数和函数入参时使用通配符
- jq的表格添加与删除
- Visual Studio中调试JS代码,页面中文出现乱码