云原生之K8S------list-watch机制,调度约束以及故障排查

news/2024/4/28 15:49:15/文章来源:https://blog.csdn.net/m0_54594153/article/details/127753833

一,list-watch机制

1,list-watch介绍

1,kubernetes是通过list-watch的机制进行每个组件的动作,保持数据同步的,每个组件之间的设计实现了解耦。

2,用户是通过kubelet根据配置文件,向apiserver发送命令,在node节点上面建立pod和container。

APIserver经过API调用,权限控制,调用资源和存储资源的过程,实际上还没有真正开始部署应用,这里需要controller manager,scheduler和kubelet的协助才能完成整个部署过程。

3,在kubernetes中,所以部署的信息都会写到etcd中保存,实际上etcd在存储部署信息的时候,会发送create事件给APIserver会通过监听(watch)etcd发过来的事件。其他组件也会监听APIserver发出来的事件。

2,list-watch工作流程

pod是kubernetes的基础单元,pod启动典型创建过程如下:

 1,这里有三个list-watch,分别是controller manager(运行在Master),Scheduler(运行在Master),kubelet(运行在node)。他们在进程已启动就会监听(watch)APIserver出来的事件。

2,用户通过kubectl或其他API客户端请求给APIserver来建立一个pod对象副本。

3,APIserver尝试着将pod对象的相关元信息存入etcd中,带写入操作执行完成,APIserver即会返回确认信息至客户端。

4,当etcd接受创建pod信息1以后,会发送一个create事件给APIserver。

5,由于controller manager 一直在监听(watch ,通过http的8080端口)APIserver中的事件,次时APIserver接受到了create事件,又会发送给controller manager。

6,controller manager 在接到create事件后,调用其中的replication controller 来保证node上面需要创建的副本数量。一旦副本数量少于rc中定义的数量,RC会自动创建副本,总之它是保证副本数量的controller。

7,在controller manager  创建pod副本以后,APIserver会在etcd中记录这个pod的详细信息。

例如pod的副本数,container的内容是什么。

8,同样的etcd会将创建pod的详细通过时间发送给APIserver。

9,由于 Scheduler 在监听(Watch)APIServer,并且它在系统中起到了“承上启下”的作用,“承上”是指它负责接收创建的Pod 事件,为其安排 Node;“启下”是指安置工作完成后,Node 上的 kubelet 进程会接管后继工作,负责 Pod生命周期中的“下半生”。 换句话说,Scheduler 的作用是将待调度的 Pod 按照调度算法和策略绑定到集群中 Node 上。

10,Scheduler 调度完毕以后会更新 Pod 的信息,此时的信息更加丰富了。除了知道 Pod 的副本数量,副本内容。还知道部署到哪个Node 上面了。并将上面的 Pod 信息更新至 API Server,由 APIServer 更新至 etcd 中,保存起来。

11,etcd将更新成功的事件发送给APIaerver,APIserver也开始反映此pod对象的调度结果。

12,kubelet 是在 Node 上面运行的进程,它也通过 List-Watch的方式监听(Watch,通过https的6443端口)APIServer 发送的 Pod 更新的事件。kubelet会尝试在当前节点上调用 Docker 启动容器,并将 Pod 以及容器的结果状态回送至 APIServer。

13,APIServer 将 Pod 状态信息存入 etcd 中。在 etcd确认写入操作成功完成后,APIServer将确认信息发送至相关的 kubelet,事件将通过它被接受。

注意:在创建pod的工作就已经完成了后,为什么kubelet还要一直监听呢?原因很简单,假设这个时候kubectl发命令,要扩充pod副本数量,那么上面的流程又会被触发一遍,kubelet会根据最新的pod的部署情况调整node的资源,又或者pod副本数量没有发生变化,,但是其中的镜像文件升级了,kubelet也会自动获取最新的镜像文件并且加载。

二,调度约束(scheducer调度器)

kubernetes通过list-watch的机制进行每个组件的协助,每个组件之间的设计实现了解耦。

1,基本的调度方式

1,nodeName用于将pod调度到指定的node名称上(跳过调度器之间分配)

2,nodeselector用于将pod调度到匹配label的node上

2,nodename

apiVersion: v1  
kind: Pod  
metadata:name: pod-example  labels:app: nginx  
spec:nodeName: node1containers:- name: nginx  image: nginx:1.15

 

kubectl apply  -f node1.yaml
kubectl get pods -o wide

 3,nodeselector

#查看标签用法
kubectl label --help
Usage:kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N
[--resource-version=version] [options]
#需要获取node上的NAME名称
kubectl get node
给对应的node设置标签分别
[root@master ~]#kubectl label nodes node1 zz=cxk[root@master ~]#kubectl label nodes node2 cc=cxk
查看标签
kubectl get nodes --show-labels

[root@master ~]# vim nodeselector.yaml
apiVersion: v1
kind: Pod
metadata:name: pod-examplelabels:app: nginx
spec:nodeSelector:lc: fuheinancontainers:- name: nginximage: nginx:1.15

kubectl delete -f nodeselectl.yaml
kubectl get pods -o wide

 

三,故障排查

描述
pendingPod创建已经提供到kubernettes,但是,因为某种原因而不能顺利创建,例如下载镜像慢,调度不成功
RunningPod已经绑定到一个节点,并且已经创建了所以容器,至少有一个容器正在运行中,或正在启动或重新启动。
Successedpod中所以容器都已经成功终止,不会重新启动
FailedPod的所以容器均已终止,且至少有一个容器已在故障中终止,也就是说,容器要么以非零状态退出,要不被系统终止,
Unknown由于某种原因apiserver无法获得pod的状态,通常是由Master与pod所在主机kubelet通信时出错。
#查看pod事件
kubectl describe TYPE NAME_PREFIX  
#查看pod日志(Failed状态下)
kubectl logs POD_NAME
#进入pod(状态为running,但是服务没有提供)
kubectl exec –it POD_NAME bash

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

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

相关文章

人工智能--机器学习概述、motplotlib的使用-折线图、散点图、柱状图、饼图

机器学习 步骤: 获取数据–数据基本处理–特征工程–机器学习(算法)–模型评估与调优 人工智能三要素:数据、算法、计算力 CPU 控制单元多,计算单元少—更适合IO密集型任务 GPU计算单元多----更适合计算密集型任务 …

IDA详细使用教程

文章目录软件介绍目录结构启动页面IDA文件加载界面介绍常用快捷键操作概述函数操作数据类型操作导航操作类型操作关闭数据库软件介绍 Ollydbg 仅仅是运行于 Windows 用户模式下的一种 32 位调试器,而 IDA 是运行于 32/64 位下,可用作反编译和调试的一个…

现在Web前端工程师年薪区间是多少?

对于互联网公司来说用户就是上帝,做好客户体验一切才有可能。所以互联网公司都会把钱砸向前端,Web前端程序员也越来越受到企业争相聘用。但web前端工程师真的那么值钱吗? 1web前端不同阶段薪资待遇如何? 目前Web前端工程师可谓是佼…

浏览器无痕模式有什么作用,手机浏览器开启无痕模式的方法

在我们的手机基本上都安装了浏览器,当我们在上网过程中,不想浏览记录被留下,那么开启无痕模式是非常有必要的。那么,浏览器的无痕模式有什么作用,手机浏览器如何开启无痕模式呢?下面教大家如何在手机浏览器…

基于springboot的信息化药品管理系统

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

第九期|不是吧,我在社交媒体的照片也会被网络爬虫?

顶象防御云业务安全情报中心监测到,某社交媒体平台遭遇持续性的恶意爬虫盗取。被批量盗取用户信息和原创内容,经分类梳理和初步加工后,被黑灰产转售给竞争对手或直接用于恶意营销。由此不仅给社交媒体平台的数字资产带来直接损失,…

ActiveState Platform - November 2022

ActiveState Platform - November 2022 ActiveState平台定期更新新的、修补的和版本化的软件包和语言。 Python 3.10.7、3.9.14、3.8.14-解决了许多安全问题的点发布。 Python C库-ibxml 2.10.3、libxslt 1.1.37、libexpat 2.4.9、zlib 1.2.13、curl 7.85.0和sqlite3 3.39.4&am…

大数据必学Java基础(九十六):PreparedStatement完成CURD和批处理

文章目录 PreparedStatement完成CURD和批处理 一、完成CURD 二、批处理 1、什么是批处理

数字图像处理练习题整理 (二)

注: 内容仅供参考, 不保证正确性, 如有误欢迎交流指正.鸣谢: 感谢 🐰🐔🧄💯💯 小组的各位同学为内容整理提供的帮助 四.空域邻域滤波 1. 高斯模板生成 请写出生成大小为 (2N1)(2N1)、标准差为 sigma 的高斯模板 H 的…

Redis基础架构

可以存哪些数据? 对于键值数据库而言,基本的数据模型是key-value模型。 例如,“hello”: “world”就是一个基本的 KV 对,其中,“hello”是 key,“world”是 value。SimpleKV 也不例外。在 SimpleKV 中&am…

【Transformers】第 2 章:文本分类

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

PyCharm连接MySQL数据库竟然如此简单

在 PyCharm 中是可以通过内置的工具来连接、操作数据库的,并且对于市面上大多数主流数据库都是支持的。 本篇教程就教大家如何通过 Pycharm 内置的数据库工具连接 MySQL 数据库。 连接 MySQL 首先打开 PyCharm ,点击菜单栏的 View --> Tool Window…

PyCharm使用心得体会1

一、Pycharm使用的心得体会 1. 查找功能的使用 查找可以使用的小功能 match case区分大小写words 精确匹配?regex 正则表达式 这个是在选择到的内容中继续进行检索 类似二次检索 2. 软件左下角的structure可以看到文件的结构 show inherited表示展示继承的方法 在…

项目搭建(七)爱心代码❤网站部署(静态网站)

爱心代码❤网站部署(静态网站)一、环境基础二、修改Tomcat启动配置三、放置静态网站四、启动Tomcat一、环境基础 如果你已经部署了Apache-Tomcat,恭喜你,你已经完成90%的部署工作 如果没有tomcat,那你先部署tomcat吧 …

Restful风格的编程

Restful风格的编程1、 Restful简介2、查询用户以及用户详情2.1常用注解2.2查询用户详情3、处理创建请求3.1RequestBody注解3.1.1用途3.1.2语法规范3.2日期类型的处理3.3BindingResult4、用户信息修改与删除4.1用户信息修改4.2案例前端界面后端控制器1、 Restful简介 Restful比…

HTML爱心代码 | 一起体验理工男的极致浪漫(电视剧男主同款)

写在前面 大家好,我是陈橘又青,今天中午刷微博,看到最近《点燃我温暖你》中男主角——理工男李峋的爱心代码撩到了无数人,于是把代码开源分享给大家。 文章目录写在前面运行示例完整代码保姆级运行教学添加背景图片修改爱心颜色运…

工业物联网解决方案:PLC数据上云

智能制造已成为工业发展的趋势,以PLC为代表的工控系统时制造业转型的核心,通过对其进行数据采集,可以实现远程监控,及时管理和维护。随着通信技术的发展,PLC的数据上云逐渐成为企业的新需求,可以更好远程监…

国际物流详解:国际物流有哪些特点?国际物流有哪些优势?

随着互联网信息的快速发展,越来越多的人通过通关网络接触到了国外世界,随之而来的采购购物潮也使得国内国际物流业发展迅速。那么国际物流有哪些特点?又有哪些优势呢?下面我们一起来详细了解一下国际物流主要特点和优势吧!一、国际物流是什么 在了解国…

oracle实验七(安全管理)

(实验目的及要求) 实验目的 (1) 掌握 Oracle 数据库安全控制的实现。 (2) 掌握 Oracle 数据库用户管理。 (3) 掌握 Oracle 数据库权限管理。 (4) 掌握 Oracle…

计算两幅图像的相似度(PSNR、SSIM、MSE、余弦相似度、MD5、直方图、互信息、Hash) 代码实现 与举例

MSE(Mean Squared Error)均方误差 MSE公式 MSE 计算模型的预测 Ŷ 与真实标签 Y 的接近程度。公式表示为: 对于两个mn的单通道图像I和K,它们的均方误差可定义为: 优点:MSE的函数曲线光滑、连续&#xff…