我是靠谱客的博主 还单身草莓,最近开发中收集的这篇文章主要介绍kubernetes的调度、节点选择器、pod的容忍策略 8月17日学习笔记一、k8s调度过程二、调度的两种方式三、pod的可能状态与原因四、容忍affinity,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 一、k8s调度过程
- 1、一个pod创建的流程
- 1、ETCD的3个阶段:
- 二、调度的两种方式
- 2、nodeName
- 2、nodeSelector
- 3、总结
- 三、pod的可能状态与原因
- 四、容忍affinity
- 1、node容忍
一、k8s调度过程
1、一个pod创建的流程
- 客户要创建资源时,会发给APIserver,APIserver会把pod资源的属性信息写入到etcd
- etcd记载完成后,会返回记载完成制定发给APIserver
- APIserver触发watch机制,发给scheduler信息,我要创建pod资源,请你给我调度分配
- scheduler进行评判,通过调度算法算出来的,并把将要绑定的pod所在的node节点IP等信息返回给APIserver
- APIserver调动etcd,写入pod和nodeIP等信息,etcd即在完成,再返回状态给APIserver
- APIserver又会通过watch机制,分配到指定的node节点当中,通过kubelet绑定对应的node节点,分配对应的pod地址,下载镜像时触发docker run 找到docker下载基础镜像,完成后,容器状态反馈给kubelet;
1、ETCD的3个阶段:
- 记录pod的元数据
- 记录pod分配的节点信息
- 记录pod的状态信息
二、调度的两种方式
注: nodename这种方式可以无视污点调度,而nodeselector这种方式不可以无视污点
去除污点命令:
kubectl taint node master node-role.kubernetes.io/master-
2、nodeName
用于将pod调度到制定的node名称上,跳过调度器直接分配
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx-test
name: nginx-test
spec:
replicas: 1
selector:
matchLabels:
app: nginx-test
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx-test
spec:
nodeName: master
containers:
- image: nginx
name: nginx
测试:
2、nodeSelector
首先给node打标签:
kubectl label node master job=master
yaml文件修改如下
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: nginx-test
name: nginx-test
spec:
replicas: 1
selector:
matchLabels:
app: nginx-test
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: nginx-test
spec:
nodeSelector:
job: master
containers:
- image: nginx
name: nginx
测试:
3、总结
可以通过nodeselector,taints和tolerations (污点与容忍) nodeAffinity,podAffinity(亲和性)
三、pod的可能状态与原因
phase(相位)
四、容忍affinity
1、node容忍
问题:不调度到host值为node1的节点
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx-test
name: nginx-test
spec:
replicas: 1
selector:
matchLabels:
app: nginx-test
template:
metadata:
creationTimestamp: null
labels:
app: nginx-test
spec:
containers:
- image: nginx
name: nginx
imagePullPolicy: IfNotPresent
ports:
- name: http
containerPort: 80
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: host
operator: NotIn
values:
- node1
第二个例子:节点IN在有一个标签job=master
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: job
operator: In
values:
- master
最后
以上就是还单身草莓为你收集整理的kubernetes的调度、节点选择器、pod的容忍策略 8月17日学习笔记一、k8s调度过程二、调度的两种方式三、pod的可能状态与原因四、容忍affinity的全部内容,希望文章能够帮你解决kubernetes的调度、节点选择器、pod的容忍策略 8月17日学习笔记一、k8s调度过程二、调度的两种方式三、pod的可能状态与原因四、容忍affinity所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复