14.k8s中调用策略和扩容缩容
hostPort会让worker节点添加转发规则,将监听端口流量转发到该容器的端口。如果宿主机的端口被占用,则无法完成调度。hostNetwork就是让pod使用宿主机的网络(net)名称空间。Taints表示污点,作用在worker工作节点上。污点类型大概分为三类: master的污点是NoSchedule,其它worker节点默认是noneNoSchedule不在接受新的Pod调度,已经调度到
K8S调度策略详解
1. 什么是nodeName
nodeName就是指定pod调度到worker节点,该节点必须在etcd中有记录。
2. 什么是hostPort
hostPort会让worker节点添加转发规则,将监听端口流量转发到该容器的端口。如果宿主机的端口被占用,则无法完成调度。
3. 什么是hostNetwork
hostNetwork就是让pod使用宿主机的网络(net)名称空间。
4. resources
- requests: 可以对容器的调度进行期望阈值,如果不符合期望则无法完成调度。
- limits: 用于控制容器对资源的使用上限,如果用户没有定义requests字段,则requests值默认和limits相等。
5. nodeSelector
将worker节点打上标签,可以根据节点的标签进行调度。
6. 什么是Taints
Taints表示污点,作用在worker工作节点上。
污点类型大概分为三类: master的污点是NoSchedule,其它worker节点默认是none
-
NoSchedule:
不在接受新的Pod调度,已经调度到该节点的Pod不会被驱逐。 -
PreferNoSchedule:
优先将Pod调度到其他节点,当其他节点不可调度时,再往该节点调度。 -
NoExecute:
不在接受新的Pod调度,且已经调度到该节点的Pod会被立刻驱逐。
7. 什么是tolerations
tolerations是污点容忍,用该技术可以让Pod调度到一个具有污点的节点。
值得注意的是,一个Pod如果想要调度到某个worker节点,则必须容忍该worker的所有污点。
8. 什么是nodeAffinity
nodeAffinity的作用和nodeSelector类似,但功能更强大。
nodeSelector可以基于节点的标签进行调度,但是匹配节点标签时,key和value必须相同。而nodeAffinity则可以让key相同,value不相同。
9. 什么是podAffinity
所谓的podAffinity指的是某个Pod调度到特定的拓扑域(暂时理解为’机房’)后,后续的所有Pod都往该拓扑域调度。
10. 什么是PodAntiAffinity
所谓的PodAntiAffinity和PodAffinity的作用相反,表示pod如果调度到某个拓扑域后,后续的Pod不会往该拓扑域调度。
11. 什么是cordon
cordon标记节点不可调度,一般用于集群维护。
cordon的底层实现逻辑其实就给节点打污点。
12. 什么uncordon
uncordon的操作和cordon操作相反,表示取消节点不可调度功能。
13. 什么是drain
所谓drain其实就是将所在节点的pod进行驱逐的操作,说白了,就是将当前节点的Pod驱逐到其他节点运行。
在驱逐Pod时,需要忽略ds控制器创建的pod。ds的无法驱逐。
k8s集群的缩容
1. k8s集群的缩容的流程
A. 将已经调度到该节点下的所有Pod驱逐到其他节点;
B. 停止kubelet进程,避免kubelet实时上报数据给apiServer;
C. 如果是二进制部署的话,可以将kube-proxy组件停止;【可选】
D. 将该节点重置环境,重新安装操作系统(防止数据泄露),然后再将服务器用做其他处理;
E. master节点移除待下线节点;
k8s集群的扩容实战案例
1. 扩容流程
A. 创建token;
B. 待加入节点安装docker,kubectl,kubeadm,kubelet等相关组件;
C. kubeadm join即可
更多推荐


所有评论(0)