• 可以将pod调度到指定的节点Node内
  • 默认:根据节点资源利用率等分配Node节点。
  • nodeName用于将Pod调度到指定的Node名称上
  • nodeSelector用于将Pod调度到匹配Label的Node上

 

工作流程
K8s通过watch实现组件工作。
1、管理员通过命令创建Pod-->apiserver接收到-->状态写入到etcd-->scheduler通过watch获取etcd中获取新的Pod-->通过算法选出pod应该调度到哪些节点内-->绑定到新的节点并更新到etcd中
2、kubelet通过watch从etcd中获取到绑定到自己节点的pod-->将pod通过docker run启动运行--> 在将状态(运行状态)更新到etcd中,根据kubelet周期上报
3、管理员查看pod状态 --> 查找etcd中pod状态 --> 返回给用户

Kubernetes Pod 调度约束

 

# 使用方法
apiVersion: v1
kind: Pod
metadata:
  name: pod-example
  labels:
    app: nginx
spec:
  nodeName: 192.168.31.65
  containers:
  - name: nginx
    image: nginx:1.15

 

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
spec:
  nodeSelector:
    env_role: dev
  containers:
  - name: nginx
    image: nginx:1.15

 

实践(指定NodeIP)

1、创建测试pod
vim pod5.yaml

apiVersion: v1
kind: Pod
metadata:
  name: pod-example
  labels:
    app: nginx
spec:
  nodeName: 192.168.1.111
  containers:
  - name: nginx
    image: nginx:1.15

2、创建文件

kubectl create -f pod5.yaml

3、查看pod调度节点

NAME READY STATUS RESTARTS AGE IP NODE 
pod-example 1/1 Running 0 42s 172.17.1.4 192.168.1.111 <none>
kubectl get pods -o wide

相关文章: