网站建设总体流程,投票制作网站,微信对接网站可以做301跳转吗,大良网站公司K8S是通过 list-watch 机制实现每个组件的协同工作
controller-manager、scheduler、kubelet 通过 list-watch 机制监听 apiserver 发出的事件#xff0c;apiserver 也会监听 etcd 发出的事件
scheduler的调度策略#xff1a;
预选策略#xff08;Predicates#xff09;…K8S是通过 list-watch 机制实现每个组件的协同工作
controller-manager、scheduler、kubelet 通过 list-watch 机制监听 apiserver 发出的事件apiserver 也会监听 etcd 发出的事件
scheduler的调度策略
预选策略Predicates通过调度算法过滤掉不满足条件的node节点如果没有满足条件的node节点Pod会处于Pending状态直到有符合条件的node节点出现 PodFitsResources根据Pod的requests资源量、PodFitsHost根据Pod的nodeName、PodFitsHostPorts根据Pod使用的端口、PodSelectorMatches根据Pod的节点标签选择器、NoDiskConflict根据Pod使用存储卷
优选策略Priorities根据优先级选项为满足预选策略条件的node节点进行优先级排序最终选择优先级最高的node节点来调度Pod LeastRequestedPriority倾向资源使用率更低的节点、BalancedResourceAllocation倾向CPU和内存使用率更接近的节点、ImageLocalityPriority倾向本地已有要使用的镜像的节点
标签的管理操作
kubectl label 资源类型 资源名称 标签keyvalue #添加标签
kubectl label 资源类型 资源名称 标签keyvalue --overwrite #修改标签
kubectl label 资源类型 资源名称 标签key- #删除标签kubectl get 资源类型 [资源名称] --show-labels
kubectl get 资源类型 -l 标签key[value]如何指定node节点调度Pod
键值运算关系 ●Inlabel 的值在某个列表中 ●NotInlabel 的值不在某个列表中 ●Gtlabel 的值大于某个值 ●Ltlabel 的值小于某个值 ●Exists某个 label 存在 ●DoesNotExist某个 label 不存在
1使用 nodeName 指定node节点名称 2使用 nodeSelector 指定node节点的标签 3使用 节点亲和性、Pod亲和性、Pod反亲和性‘
节点亲和 pod亲和 pod反亲和 4使用 给node节点设置污点Pod设置容忍
设置容忍
Pod设置容忍tolerations与containers字段同一层级
spec:tolerations:- operator: Exists|Equalkey: 污点keyvalue: 污点valueeffect: NoSchedule|NoExecute|PreferNoSchedule#其中的 key、vaule、effect 都要与 Node 上设置的 taint 保持一致
#operator 的值为 Exists 将会忽略 value 值即存在即可
#tolerationSeconds 用于描述当 Pod 需要被驱逐时可以在 Node 上继续保留运行的时间 设置污点
Kubctl taint node 节点名称 污点key[value]类型
类型NoSchedule一定不被调度 PreferNoSchedule尽量不被调度 NoExecute不会被调度并驱逐Podkubectl taint node 节点名称 污点key-kubectl describle node 节点名称 | grep - A taints
设置节点不可调度
kubectl cordon 节点名称kubectk uncordon 节点名称kubectl taint node 节点名称 key:NoSchedule设置节点不可调度并驱逐Pod
kubectl drain 节点名称 --ignore-daemonsets --delete-emptydir-data --forcekubectl taint node 节点名称 key:NoExecute