Kubernetes CSI注册流程

这篇具有很好参考价值的文章主要介绍了Kubernetes CSI注册流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题起因

近段时间,在工作中,遇到了一个问题:有一套K8S集群在做可靠性验证,在重启上下电之后,发现这个节点上的Pod状态异常。通过kubectl describe查看Pod情况,都是挂卷出错,而kubelet日志中也报了某个CSI插件没有找到。但问题是CSI插件对应的Pod是正常Running状态。那么为什么CSI会找不到呢?于是带着这个问题,研究起了k8s的代码。

代码分析

CSI没有找到,那意味着肯定是有地方储存CSI的数据,相应的有地方去创建/更新CSI的数据。这个咨询CSI业务的开发了解到,CSI注册后会更新csiNode资源,同时node资源上也会有csi的拓扑信息。
另外根据kubelet的日志报错信息:Error calling CSI NodeGetInfo()找到了CSI注册流程的代码。
CSI注册流程的代码入口在pkg/kubelet/pluginmanager/plugin_manager.go:108 (v1.25.3版本)

首先是Run方法,这里主要处理了两件事

  • 开启了kubelet对/var/lib/kubelet/plugins_registry目录的监听,如果有文件更新,会同步更新dsw的缓存
  • 开启了reconciler主循环,对比asw和dsw的差异,然后去触发CSI的卸载和注册

reconciler主循环

  • 卸载:遍历asw缓存中的插件信息,和dsw做比对。如果出现dsw没有的插件或者信息不一致的插件,则会将该插件卸载
  • 注册:遍历dsw缓存中的插件信息,如果asw没有,则会触发注册流程。通过proto文件定义双方的接口,kubelet作为客户端调用CSI Pod服务端实现的接口GetInfo、NodeGetInfo获取插件信息,然后向apiserver注册CSINode、Node信息,并在最后通过NotifyRegistrationStatus通知CSI Pod。

根据个人对代码的理解,绘制了下面的流程图。
Kubernetes CSI注册流程

问题分析

由于kubelet日志中出现了Error calling CSI NodeGetInfo()的报错日志,那么说明CSI Pod实现的NodeGetInfo方法出现了错误。通过CSI开发分析,是由于需要发请求,而节点刚重启,受网络配置的影响,请求超时了,导致方法报错。
那么又出了一个问题,为什么没有恢复呢?
原因在于在kubelet调用NodeGetInfo方法时,已经将asw缓存更新了,此时dsw和asw缓存一致,kubelet不会再触发卸载、注册流程。
这不合理呀,这里没有真正注册成功啊。
再次走读代码,终于识别到了一个点:kubelet是有通知事件发给CSI Pod的。在校验CSI信息和注册过程中,如果出现异常,kubelet会发一个注册失败的通知给CSI Pod。而在官方的CSI范例中,CSI是会清理自己在/var/lib/kubelet/plugins_registry目录创建的文件,并退出。因为CSI是一个Daemonset类型部署的Pod,那么在主进程退出之后,K8S会再次部署这个Pod。那么CSI Pod会再次进入CSI注册的主流程,而那个时候,网络就绪了,CSI注册也就会成功。
根据这个信息,向CSI开发确认,他们忽略了通知注册失败的处理,导致注册失败后没有自动恢复。
OK,问题定位清楚了,也趁着这个机会学习了CSI的注册流程。文章来源地址https://www.toymoban.com/news/detail-487985.html

到了这里,关于Kubernetes CSI注册流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序注册流程(企业注册)

    ·未注册过小程序的邮箱 ·企业名称、营业执照号、开户名称、开户行、对公账户、开户地点、电话 · 注册地址:微信公众平台 ​​ 第一步:登录微信公众平台,点击小程序  

    2023年04月16日
    浏览(55)
  • 2023阿里云账号注册流程(多种注册方法随便选)

    阿里云账号怎么注册?阿里云账号支持手机号注册、阿里云APP注册、支付宝和钉钉多种注册方式,账号注册后需要通过实名认证才可以购买或使用云产品,阿里云百科来详细说下不同途径注册阿里云账号图文流程: 目录 阿里云账号注册流程 方法一:手机号注册阿里云账号

    2024年02月12日
    浏览(45)
  • 微服务注册中心之Zookeeper,Eureka,Nacos,Consul,Kubernetes区别

    微服务的注册中心目前主流的有以下五种: Zookeeper , Eureka , Consul , Nacos , Kubernetes 1.1.1 为什么需要注册中心 随着单体应用拆分,首当面临的第一份挑战就是服务实例的数量较多,并且服务自身对外暴露的访问地址也具有动态性。可能因为服务扩容、服务的失败和更新等

    2024年02月06日
    浏览(45)
  • 小程序账号注册完整流程

    在开始写微信小程序之前,必须先有小程序账号,本文将使用图文的方式,详细的介绍整个注册的过程。 打开微信公众平台(https://mp.weixin.qq.com)后,点击立即注册按钮。 点击完【立即注册】后,注册类型选择小程序。 点击小程序图标后,将真正进入小程序注册流程。 这里大家要注

    2024年02月09日
    浏览(51)
  • Midjourney注册全流程~超详细

    Midjourney是一个由同名研究实验室开发的人工智能程序,可以根据文本生成图像,生成图片的质量很高。这篇文章教你如何注册Midjourney,你只要按照以下步骤一步步来就行了。 由于Midjourney现在依托discord来完成图片生成功能,discord就相当于微信,而Midjourney可以理解为微信小程

    2024年02月09日
    浏览(56)
  • 微信小程序注册审核流程

    哈喽,各位亲爱的小伙伴们,大家好!今天给大家介绍如何在微信官方注册小程序 ,文章不长,一定要耐心看完,你会收获满满的。 1.在微信公众平台官网首页(mp.weixin.qq.com)点击右上角的“立即注册”按钮。选择小程序。 2.选择注册的帐号类型为小程序 3.填写邮箱和密码

    2024年02月09日
    浏览(59)
  • Midjourney 注册 12 步流程教学

    原文: https://bysocket.com/midjourney-register/ 先推荐一个 PromptHero 中文官网 https://promptheroes.cn/ :Prompt Heroes 官网是提供 AI 绘画相关提示词中文网站,包括 Midjourney(MJ)、 Stable Diffusion、DALL-E 等 谷歌浏览器搜索discord,点击进入官网。如图 点击login登录账号,账号会提示异地登录验

    2023年04月25日
    浏览(50)
  • Kubernetes架构和工作流程

    目录 一、kubernetes简介 1.k8s的由来  2.为什么用 k8s ? 3.k8s主要功能 二、k8s集群架构与组件 1.Master 组件 1.1Kube-apiserver 1.2Kube-controller-manager  1.3Kube-scheduler 2.Node组件 2.1Kubelet 2.2Kube-Proxy 2.3docker 或 rocket 3.配置存储中心 3.1etcd 三、k8s创建pod的工作流程 四、k8s核心概念 1.Pod 2.Pod控制器

    2024年02月14日
    浏览(48)
  • 谷歌账号注册流程全攻略

    一、访问谷歌账号注册页面 首先,你需要访问谷歌账号注册页面。你可以直接点击此链接,或者在谷歌首页点击右上角的“登录”按钮,在弹出的登录框中点击“创建帐号”。 在注册页面,你需要填写以下个人信息: 名字:输入你的名字。 姓氏:输入你的姓氏。 用户名:

    2024年02月05日
    浏览(57)
  • QT-C++ 注册机软件,生成机器码和注册码,支持授权时间

    1、编译环境: 本程序使用的编译环境是QT5.12.0和VS2017,如果你安装环境不用,你可以通过阅读里面的程序代码,进行代码有效的提取,然后你再自己创建工程进行编译使用。 2、基本描述: 通过获取计算机的硬件信息,然后通过加密组成,生成每个计算机的唯一机器码,类似

    2024年02月11日
    浏览(94)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包