文章目录
前言
Pod在创建时,master会根据node节点物理机的状态,pod资源请求requests,淘汰掉不符合要求的node。剩下的node会根据评分机制选择最高分的。分数相同也会随机选一个。
在生产环境中,会根据实际需求人为干预调度过程。如指定创建在某个pod,或倾向创建在某些pod等。
nodeSelector
nodeSelector即节点选择器,事先为node打标签,然后选择拥有该标签的node进行调度。
查看node节点默认标签:
sudo kubectl describe node 192.168.100.156
Name: 192.168.100.156
Roles: node
Labels: beta.kubernetes.io/arch=amd64
beta.kubernetes.io/os=linux
kubernetes.io/arch=amd64
kubernetes.io/hostname=192.168.100.156
kubernetes.io/os=linux
kubernetes.io/role=node
为node添加标签,采用key=value格式。
kubectl label node 192.168.100.156 project="eshop"
kubectl label node 192.168.100.156 disktype="ssd"
两个条件都必须满足的nodes才被选择,如多个node都符合再根据高分选出其中一个node。
kind: Deployment
apiVersion: apps/v1
metadata:
labels:
app: myserver-tomcat-app2-deployment-label
name: myserver-tomcat-app2-deployment
namespace: myserver
spec:
replicas: 4
selector:
matchLabels:
app: myserver-tomcat-app2-selector
template:
metadata:
labels:
app: myserver-tomcat-app2-selector
spec:
nodeSelector:
project: eshop
disktype: ssd
containers:
- name: myserver-tomcat-app2-container
image: tomcat:7.0.94-alpine