- 博客(18)
- 收藏
- 关注
原创 Schedule Framework
scheduling framework 是 Kubernetes 调度器的可插拔架构,它由一组直接编译到调度程序中的“plugin”API 组成。调度框架定义了一些扩展点,调度程序插件注册以在一个或多个扩展点处调用。
2025-02-08 11:08:50
1035
原创 02-Informer
Informer 是一个带有本地缓存以及索引机制的核心工具包,当请求为 查询 操作的时会优先从本地缓存内去查找数据,而 创建、更新、删除,这类的操作,则会根据事件通知写入到队列 DeltaFIF0 中,同时对应的事件处理过后,更新本地缓存,使本地缓存与 ETCD 的数据保持一致。Informer 抽象出来的这个缓存层,将 查询 相关操作的压力接收了下来,这样就不必次都去调用 APIServer的接口,减轻了 APIServer的数据交互压力。从上图就能看出来,Informer 是有多个组件构成的。
2025-01-17 18:17:12
1010
原创 origin/release-0.4——CHANGELOG
在origin/release-0.4版本的时候,k8s加入了一个新的文件,大家checkout到pr1786看一下详情。CHANGELOG这个文件记录了当前版本与上个版本相比的改变,可以阅读的时候更直观的看到版本之间的改变。如上,0.4加入了Persistent Disk volume。
2025-01-15 10:55:37
112
原创 origin/release-0.2——kubecfg
cloudcfg在这个版本名字改成了kubecfg,具体做啥的看以前的文章,接下来看一下该版本的kubecfg如何运作的。
2025-01-14 17:19:01
424
原创 origin/release-0.2——controller-manager
用于指定 Kubernetes API 服务器的地址。这里可以看出,只定义了api的地址,不像0.1版本时还定义了etcd,0.2要通过apiserver才能联系etcd,更加安全。var (
2025-01-14 16:26:39
356
原创 origin/release-0.2——apiserver
minio用来指代集群中的工作节点(worker nodes),随着时间的推移,“minion” 这个术语逐渐被 “node” 所取代,因此在现代的 Kubernetes 文档和讨论中,你更常见到 “node” 这个术语。var (//服务器监听的端口。默认是 8080。//服务器监听的本地地址。默认是 127.0.0.1。//API 请求的前缀。默认是 /api/v1beta1。//云服务提供商的名称。空字符串表示没有指定提供商。//云提供商配置文件的路径。空字符串表示没有配置文件。
2025-01-14 15:14:52
701
原创 apiserver重构
早期的k8s中,apiserver初始化所需的所有代码都放在cmd目录下的包中,比较混乱,不利于阅读,一般cmd目录下的代码越少越好,接下来尝试对其进行优化。注意:本文以823d6545233分支为例,大家可以checkout后查看。
2025-01-13 20:10:07
191
原创 origin/release-0.1——liveness
Hostname string //Kubelet 所在主机的主机名。EtcdClient tools . EtcdClient //用于与 Etcd 交互的客户端。DockerClient DockerInterface //用于与 Docker 交互的客户端接口。DockerPuller DockerPuller //用于拉取 Docker 镜像的接口。CadvisorClient CadvisorInterface //用于与 Cadvisor 交互的客户端接口。
2025-01-13 18:47:15
367
原创 cloudcfg优化——支持不同方式打印
if *json{}else {最后我们打印的时候就可以调用printerreturn nilreturn nild.Pod(pod)
2025-01-13 16:11:08
99
原创 cloudcfg优化
用户输入resize命令行,cloudcfg会解析命令行参数并进行匹配,调用ResizeControllerif err!= nil {return errreturn nilResizeController调用UpdateReplicationController向apiserver发送put请求。
2025-01-13 15:03:46
350
原创 origin/release-0.1——controller-manager
主要作用是定义和解析两个命令行参数 etcd_servers 和 master,用于指定 etcd 服务器和 Kubernetes API 服务器的地址。通过 flag.String 函数定义参数,并在 main 函数中调用 flag.Parse() 解析参数。解析后的参数值可以用于配置和连接相应的服务器。var (//用于指定 etcd 服务器的地址用于指定 Kubernetes API 服务器的地址。
2025-01-10 15:58:25
439
原创 origin/release-0.1——proxy
kube-proxy 支持多种运行模式,包括 iptables、ipvs 和 userspace,以适应不同的性能和兼容性需求。var (//指定代理程序的配置文件路径//etcd 集群的服务器地址在这个里看到,该版本proxy也是直接与etcd通信。这段代码定义了一个名为 Operation 的自定义类型和三个常量 SET、ADD 和 REMOVE,它们使用 iota 关键字自动生成连续的整数值。通过这种方式,可以更清晰地表示不同的操作类型,并在代码中使用这些常量来提高可读性和类型安全性。
2025-01-09 18:44:34
838
原创 origin/release-0.1——kubelet
从下面的参数中可以发现,只有etcd的信息,这是因为该版本中,kubelet是与etcd直接通信的,而不是和apiserver通信。var (//用户可以通过这个标志指定一个配置文件的路径,程序会读取该文件中的配置信息。//用户可以通过这个标志指定 etcd 集群中服务器的 URL,程序会与这些 etcd 服务器进行交互。//用户可以通过这个标志指定程序在运行的容器和配置之间进行同步的最大时间间隔。//用户可以通过这个标志指定程序检查配置文件中是否有新数据的时间间隔。
2025-01-08 18:55:44
689
原创 origin/release-0.1——apiserver
代码刚开始定义一些命令行标志(flags),这些标志可以在运行程序时通过命令行参数进行设置,以便在运行程序时灵活地设置服务器的监听地址、端口和 API 前缀。这种方式使得程序更加灵活和可配置,用户可以根据需要调整这些参数,而不需要修改代码。var (这里就拿taskRegistry为例,跳转到pkg下的registry.TaskRegistry可以看到,这个接口中放了很多关于对Task操作的方法。以 ListTasks为例,跳转后查看如何调用了这个方法。
2025-01-07 17:24:12
695
1
原创 origin/release-0.1——cloudcfg
版本信息:通过 -v 参数打印程序的版本号。连接主机:通过 -h 参数指定要连接的主机地址。配置文件:通过 -c 参数指定配置文件的路径。标签查询:通过 -l 参数指定用于列出的标签查询。更新间隔:通过 -u 参数指定更新间隔时间。端口规范:通过 -p 参数指定端口规范。服务端口:通过 -s 参数指定服务端口,如果为正数,则在指定端口创建并运行相应的服务。认证信息文件:通过 -auth 参数指定认证信息文件的路径,如果文件不存在,则提示用户输入认证信息。
2025-01-07 16:40:36
681
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人