- 可以将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状态 --> 返回给用户
# 使用方法 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>