nodeName是最简单的节点选择约束方式,我常常用它来将pod直接指定到某台节点上,进行测试。
注意:如果它不为空,则调度程序不会在调度这个pod了,并且在命名节点上运行的kubelet尝试运行该pod。因此,如果在PodSpec中提供nodeName,则它将优先于其他的约束。
使用nodeName选择节点的一些限制情况:
- 如果指定的命名节点不存在,则不会运行该pod,并且在某些情况下可能会自动删除。
- 如果指定的命名节点没有足够的资源,则pod将失败,并显示其失败原因,例如, OutOfmemory或OutOfcpu。
- 节点名称在云环境中并不总是可预测或稳定的。
例子
第一步,先查看你的节点有哪些,可用如下命令查看:
# kubectl get nodes
kube-01 Ready <none> 425d v1.13.2
kube-02 Ready <none> 405d v1.13.2
kube-03 Ready <none> 405d v1.13.2
然后,在pod中增加nodeName
,就可以了:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx
nodeName: kube-01
这样,该pod将运行在名为kube-01
的节点上了。