k8s之pod工作流程与调度
一:k8s之pod工作流程与调度
1.1:k8s创建pod工作流程
过程:
1、用户创建pod的信息通过API Server存储到etcd中,etcd记录pod的元信息并将结果返回API Server
2、API Server告知调度器请求资源调度分配,调度器通过计算,将优先级高的node与pod绑定并告知API Server
3、API Server将此信息写入etcd,得到etcd回复后调用kubelet创建pod
4、kubelet使用docker run创建pod内的容器,得到反馈信息后将容器信息告知API Server
5、API Server将收到的信息写入etcd并得到回馈
6、此时使用kubectl get pod就可以查看到信息了
1.2:调度方式
1、nodeName:
- 用于将Pod调度到指定的node名称上(跳过调度器直接分配)
2、nodeSelector:
- 用于将pod调度到匹配label的node上
两种方式都是通过yaml文件来实现
1.2.1:nodeName方式
- 编写yaml文件
[root@master test]# vim nodename.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-example
labels:
app: nginx
spec:
nodeName: 20.0.0.54
containers:
- name: nginx
image: nginx:1.15
- 创建pod资源
[root@master test]# kubectl apply -f nodename.yaml
pod/pod-example created
[root@master test]# kubectl get pod -w
NAME READY STATUS RESTARTS AGE
pod-example 0/1 ContainerCreating 0 7s
pod-example 1/1 Running 0 21s
- 查看pod信息,是否经过调度器
[root@master test]# kubectl describe pod pod-example
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Events: '发现没有经过调度器,node节点也是指定的'
Normal Pulling