K8S调度

K8S调度

一、List-Watch 机制

在这里插入图片描述

controller-manager、scheduler、kubelet 通过 List-Watch 机制监听 apiserver 发出的事件,apiserver 通过 List-Watch 机制监听 etcd 发出的事件

1.scheduler 的调度策略

预选策略/预算策略:通过调度算法过滤掉不满足条件的Node节点,如果没有满足条件的Node节点,Pod会处于Pending状态,直到有符合条件的Node节点出现
PodFitsResources、PodFitsHost、PodFitsHostPorts、PodSelectorMatches、NoDiskConflict
优选策略:根据优先级选项为满足预选策略条件的Node节点进行优先级权重排序,最终选择优先级最高的Node节点来调度Pod
LeastRequestedPriority、BalancedResourceAllocation、ImageLocalityPriority

二、如何将Pod调度到指定节点

1)使用 nodeName 字段指定 Node节点名称
2)使用 nodeSelector 指定 Node节点的标签
3)使用 节点/Pod 亲和性
4)使用 污点+容忍 

1.标签的管理

kubectl label <资源类型> <资源名称>  标签key=标签value               ##设置标签
kubectl label <资源类型> <资源名称>  标签key=标签value --overwrite   ##修改标签
kubectl label <资源类型> <资源名称>  标签key-                       ##删除标签kubectl get <资源类型> <资源名称> --show-labels                     ##展示资源名称下的所有标签
kubectl get <资源类型> -l 标签key[=标签value]                       ##列出符合条件的标签下的资源

2.亲和性

2.1节点亲和性

节点亲和性(nodeAffinity):匹配指定的Node节点标签,将要部署的Pod调度到满足条件的Node节点上

2.2Pod亲和性

拓扑域:具有相同标签的node节点
Pod亲和性(podAffinity):匹配指定的Pod标签,将要部署的Pod调度到与指定Pod所在的Node节点处于 同一个拓扑域 的Node节点上
Pod反亲和性(podAntiAffinity):匹配指定的Pod标签,将要部署的Pod调度到与指定Pod所在的Node节点处于 不同的拓扑域 的Node节点上

2.3亲和性的策略

硬策略(required....):要强制性的满足指定条件,如果没有满足条件的Node节点,Pod会处于Pending状态,直到有符合条件的Node节点出现软策略(preferred....):非强制性的,会优先选择满足条件的Node节点调度,即使没有满足条件的Node节点,Pod依然会完成调度

3.污点(taint)

3.1配置

kubectl taint node <node名称>  key=value:effecteffect支持的选项NoSchedule(一定不会被调度)  
PreferNoSchedule(尽量不被调度)  
NoExecute(不会被调度,并驱逐节点上的Pod)

3.2污点删除

kubectl taint node <node名称>  key[=value:effect]-

3.3查看节点有哪些污点

kubectl describe nodes  <node名称>  | grep Taints

4.容忍 (tolerations)

4.1配置

spec:tolerations:- key: 污点键名operator: Equal|Existsvalue: 污点键值effect: NoSchedule|PreferNoSchedule|NoExecute

5.不可调度(cordon)

kubectl cordon 	<node名称>    ##设置为不可调度kubectl uncordon  <node名称>   ##解除不可调度

6.不可调度 + 驱逐(drain)

kubectl drain  <node名称>  --ignore-daemonsets --delete-emptydir-data --force

7.Pod的启动过程

1)通过 scheduler 根据调度算法选择一台在最适合的 Node节点运行 Pod
2)拉取镜像
3)挂载 存储卷 等
4)创建并运行容器
5)根据容器的探针探测结果设置 Pod 状态

8.Pod的生命周期

生命周期状态说明
PendingPod已经创建,但是处于包括Pod还未完成调度到Node节点的过程或者处于镜像拉取过程中、存储卷挂载失败等情况
RunningPod中至少有一个容器正在运行
SucceededPod中的所有容器都已经成功退出,且不再重启。(Completed)
FailedPod中的所有容器都已终止,且至少有一个容器异常退出。(Error)
UnknownMaster节点的 controller-manager 无法获取 Pod 的状态,通常是因为 Master节点与 Pod 所在的 Node 节点通信失联导致的
Pod遵循预定义的生命周期,起始于Pending阶段,如果至少其中有一个主要容器正常启动,则进入Running阶段,之后取决于Pod中是否有容器以失败状态结束而进入Succeeded或者Failed阶段。

三、K8S中排障方法

kubectl get pods                                                                查看Pod运行状态
kubectl describe <资源类型|pods> <资源名称>                                     查看资源的详细信息和事件
kubectl logs <pod名称> [-c <容器名>] [-p]                                       查看容器的进程日志
kubectl exec -it <pod名称> [-c <容器名>] sh|bash                                进入Pod容器,查看容器内部相关状态信息
kubectl debug -it <pod名称> --image=<临时容器的镜像名>  --target=<目标容器>     在Pod中创建临时容器进入目标容器进行调试在Pod容器的宿主机使用nsenter转换网络等命名空间,直接在宿主机进入目标容器的命名空间进行调试

查看k8s集群中相关信息

kubectl get nodes     查看Node节点的运行状态
kubectl get cs        查看Master组件的状态
kubectl cluster-info  查看集群信息journalctl -u kubelet -f   跟踪查看Kubelet进程日志

看k8s集群中相关信息

kubectl get nodes     查看Node节点的运行状态
kubectl get cs        查看Master组件的状态
kubectl cluster-info  查看集群信息journalctl -u kubelet -f   跟踪查看Kubelet进程日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/69916.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI绘画】3分钟学会ikun幻术图

目录 前言一、效果展示二、准备工作三、操作步骤3.1平台创建实例3.2 启动SD 四、安装QR Code Monster 模型五、成图 前言 大家热爱的ikun幻术在今天的分享中将呈现。在本文中&#xff0c;我们将揭示一个备受欢迎的图像幻术技术&#xff0c;让您感受到令人惊叹的视觉创造力。 …

Vue2(组件开发)

目录 前言一&#xff0c;组件的使用二&#xff0c;插槽slot三&#xff0c;refs和parent四&#xff0c;父子组件间的通信4.1&#xff0c;父传子 &#xff1a;父传子的时候&#xff0c;通过属性传递4.2&#xff0c;父组件监听自定义事件 五&#xff0c;非父子组件的通信六&#x…

Flink之Partitioner(分区规则)

Flink之Partitioner(分区规则) 方法注释global()全部发往1个taskbroadcast()广播(前面的文章讲解过,这里不做阐述)forward()上下游并行度一致时一对一发送,和同一个算子连中算子的OneToOne是一回事shuffle()随机分配(只是随机,同Spark的shuffle不同)rebalance()轮询分配,默认机…

信息与通信工程面试准备——数学知识|正态分布|中心极限定理

目录 正态分布 正态分布的参数 正态分布的第一个参数是均值 正态分布的第二个参数是标准差SD 所有正态分布的共同特征 标准正态分布&#xff1a;正态分布的特例 中心极限定理 理解定义 示例# 1 示例# 2 知道样本均值总是正态分布的实际含义是什么&#xff1f; 正态分…

pytorch_lightning报错 You requested gpu: [1],But your machine only has: [0]

pytorch_lightning报错 You requested gpu: [1]&#xff0c;But your machine only has: [0] 问题及分析 报错图片如下&#xff1a; 分析 gpu:[1]指代的gpu的标号&#xff0c;如果笔记本中只包含一个GPU&#xff0c;一般序号为[0].所以无法找到程序指定的GPU。 解决方法 …

语聚AI公测发布,大语言模型时代下新的生产力工具

语聚AI 公测发布 距离语聚AI内测上线已经过去近1个月。 这期间&#xff0c;我们共邀请了近百位资深用户与行业专家加入语聚AI产品体验。通过大家的热情参与积极反馈&#xff0c;我们不断优化并完善了语聚AI的功能与使用体验。 经过研发团队不懈的努力&#xff0c;今天语聚AI终…

Java数字化智慧工地管理云平台源码(人工智能、物联网、大数据)

智慧工地优势&#xff1a;"智慧工地”将施工企业现场视频管理、建筑起重机械安全监控、现场从业人员管理、物料管理、进度管理、扬尘噪声监测等现场设备有机、高效、科学、规范的结合起来真正实现工程项目业务流与现场各类监控源数据流的有效结合与深度配合&#xff0c;实…

【等保测评】等保初级测评师试题合集(3w字汇总)

【等保测评】信息安全等级保护初级测评师试题合集 一、法律法规单选多选判断 二、实施指南单选多选 三、定级指南四、基本要求五、测评准则六、信息安全等级测评模拟模拟试题1一、单选二、多选三、判断四、简答 模拟试题2一、单选二、多选三、判断四、简答 模拟试题3一、单选二…

深度学习实战48-【未来的专家团队】基于AutoCompany模型的自动化企业概念设计与设想

大家好,我是微学AI,今天给大家介绍一下深度学习实战48-【未来的专家团队】基于AutoCompany模型的自动化企业概念设计与设想,文本将介绍AutoCompany模型的概念设计,涵盖了AI智能公司的各个角色,并结合了GPT-4接口来实现各个角色的功能,设置中央控制器,公司运作过程会生成…

【git clone error:no matching key exchange method found】

拉起项目代码报错 git clone ssh://uidxxxgerrit-xxxxxxxx Cloning into ‘xxxxx’… Unable to negotiate with xxx.xx.xxx.ip port xxxxx: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 fatal: Could not …

通用与垂直大模型之战:大模型驱动的商业智能变革之路

科技云报道原创。 是做通用大模型还是垂直大模型&#xff0c;这一个争论在“百模大战”的下讨论愈发热烈。 目前&#xff0c;以微软、谷歌、百度、阿里等为代表的发力于通用大模型的科技大厂&#xff0c;也都开始推动大模型在垂直领域的商业化落地。 比如说&#xff0c;微软…