![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kubernetes源码分析
文章平均质量分 92
Yuan_sr
这个作者很懒,什么都没留下…
展开
-
kubelete源码阅读
kubelet (Kubernetes) 中的 PLEG 模块根据每个匹配的 pod 级别事件调整容器运行时状态,并通过应用更改来保持 pod 缓存最新。让我们看一下过程图中下面的红色虚线。kubele通过调用SyncLoop()不断检查PLEG的健康状况,Healthy()通过检查relist(PLEG关键任务)完成时间是否在设定的阈值内判断PLEG的健康状况。原创 2023-06-28 23:42:49 · 256 阅读 · 0 评论 -
kube-proxy源码阅读
然而,就是在判断封包要往哪里走,这里的方法两者使用的方式是不一样的。虽然封包只要被拆解一次,但封包在比对每个 rule 时,都要再看要用进來的这个封包和目前轮到的 rule 进行行比对。IPVS 在判断上面就简单很多,他是用 hash table(hash表),在时间复杂度上,通常是是 O(1),即便遇到最差的情況(worst case),也只是 O(n)。但对于 ipvs 模式的 kube-proxy,无论有多少 pod/service,iptables 的规则数都是固定的。原创 2023-06-26 21:16:36 · 213 阅读 · 0 评论 -
Kubernetes 中创建 Pod 时集群中到底发生了些什么?
想象一下,如果我想将 nginx 部署到 Kubernetes 集群,我可能会在终端中输入类似这样的命令:$ kubectl run --image=nginx --replicas=3然后回车。几秒钟后,你就会看到三个 nginx pod 分布在所有的工作节点上。这一切就像变魔术一样,但你并不知道这一切的背后究竟发生了什么事情。Kubernetes 的神奇之处在于:它可以通过用户友好的 API 来处理跨基础架构的 deployments,而背后的复杂性被隐藏在简单的抽象中。但为了充分理解它为我们提供转载 2021-11-18 20:38:45 · 284 阅读 · 1 评论 -
什么是informer机制
Informer机制是kubernetes中不依赖任何中间件的情况下仅通过HTTP协议实现消息的实时性、可靠性、顺序性通信的一种机制。k8s是典型的server-client架构。etcd存储集群的数据信息,apiserver作为统一的操作入口,任何对数据的操作都必须经过apiserver。客户端通过ListAndWatch机制查询apiserver,而informer模块则封装了List-watch。ListAndwatch是k8s统一的异步消息处理机制,保证了消息的实时性、可靠性、顺序性等,为声明原创 2021-11-09 14:22:09 · 968 阅读 · 0 评论 -
Kubernetes Controller Manager 工作原理
原文连接:https://blog.ihypo.net/15763910382218.html本文基于对 Kubernetes v1.16 的源码阅读,文章有一定的源码,但我会通过配图尽量描述清晰在 Kubernetes Master 节点中,有三个重要组件:ApiServer、ControllerManager、Scheduler,它们一起承担了整个集群的管理工作。本文尝试梳理清楚 ControllerManager 的工作流程和原理。什么是 Controller Manager根据官方文档的转载 2021-11-01 15:27:26 · 536 阅读 · 0 评论 -
Kubernetes构建过程分析
构建方式Kubernetes的构建方式可以分为3种,分别是本地环境构建、容器环境构建、Bazel环境构建。Kubernetes构建方式:本地环境构建makemake all容器环境构建make releasemake quick-releaseBazel环境构建make bazel-build下面将详细介绍前两种构建方式:本地环境构建执行make或者make all命令,会编译Kubernetes的所有组件,组件二进制文件输出的相对路径是_output/bin原创 2021-08-23 21:31:20 · 499 阅读 · 0 评论 -
Kubernetes各组件的功能
Kubernetes各组件的功能1.kubectlkubectl是Kubernetes官方提供的命令行工具CLI,用户可以通过命令行的方式与Kubernetes API Server进行操作,通信协议使用HTTP/JSON。2.client-goclient-go是从Kubernetes代码中抽离出来的包,作为官方提供的GO语言的客户端发挥作用。client-go简单、易用,Kubernetes系统的其他组件与Kubernetes API Server通信的方式也是基于client-go实现。3.原创 2021-08-23 21:05:15 · 994 阅读 · 0 评论 -
基于Kubernetes1.20.1版本开发调试环境搭建
接下来的一段时间将要学习Kubernetes源码,为了更好的查看源码和调试程序,因此搭建了一个Kubernetes开发调试环境,该环境可以结合断点调试理解代码的运行过程。准备虚拟机并安装必要软件$ yum install -y docker wget curl vim golang etcd openssl git g++ gcc$ echo "export GOROOT=/usr/local/goexport GOPATH=/home/workspaceexport PATH=$PATH:$G原创 2021-08-23 19:48:26 · 136 阅读 · 0 评论