Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【K8s】源码片段 01-02

【K8s】源码片段 01-02

原创
作者头像
Librant
修改于 2022-06-13 15:05:00
修改于 2022-06-13 15:05:00
2530
举报
文章被收录于专栏:跟我一起学 K8s跟我一起学 K8s

本小结主要分析 registry/interface.go


代码语言:go
AI代码解释
复制
pkg/registry/interfaces.go

// TaskRegistry is an interface implemented by things that know how to store Task objects
type TaskRegistry interface {
	// ListTasks obtains a list of tasks that match query.
	// Query may be nil in which case all tasks are returned.
	ListTasks(query *map[string]string) ([]api.Task, error)
	// Get a specific task
	GetTask(taskId string) (*api.Task, error)
	// Create a task based on a specification, schedule it onto a specific machine.
	CreateTask(machine string, task api.Task) error
	// Update an existing task
	UpdateTask(task api.Task) error
	// Delete an existing task
	DeleteTask(taskId string) error
}

// ControllerRegistry is an interface for things that know how to store Controllers
type ControllerRegistry interface {
	ListControllers() ([]api.ReplicationController, error)
	GetController(controllerId string) (*api.ReplicationController, error)
	CreateController(controller api.ReplicationController) error
	UpdateController(controller api.ReplicationController) error
	DeleteController(controllerId string) error
}

regitry 中提供了两个接口:

  • TaskRegistry
  • ControllerRegistry

这两个接口提供的方法差不多,对 Task/Controller 处理的封装;

  • List(): 列出
  • Get():获取
  • Create():创建
  • Update():更新
  • Delete():删除

在 pkg/registry/task/task_registry.go 中对 TaskRegistry 接口的实现;

在 pkg/registry/controller/controller_registry.go 中对 ControllerRegistry 接口的实现;


下面来详细分析这些接口的实现:

pkg/registry/task_registry.go

代码语言:go
AI代码解释
复制
// TaskRegistryStorage implements the RESTStorage interface in terms of a TaskRegistry
type TaskRegistryStorage struct {
	registry      TaskRegistry
	containerInfo client.ContainerInfo
	scheduler     Scheduler
}

TaskRegistryStorage 结构体中有三个成员变量:

  • TaskRegistry:Task 相关的操作
  • ContainerInfo: 运行的容器的信息
  • Scheduler:调度的接口

该结构体有五个成员方法:

  • List():查找服务和标签的任务列表; 实际也是调用的 TaskRegistry 中的 List() 方法;
代码语言:go
AI代码解释
复制
queryMap := client.DecodeLabelQuery(url.Query().Get("labels"))

根据输入的 URL 中的 labels 参数,返回 labels 的 map;

labels 中的标签值:key1=value1,key2=value2 的形式;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
k8s first commit 源码分析之 API Server
api-server 是 k8s 的核心组件之一,用于接收 kubelet 的请求,并将请求信息保存到后端存储 etcd 中。核心功能是提供 k8s 各类资源对象的 CURD 等操作。
菜菜cc
2022/11/15
3700
【K8s】api-server 源码分析 01-02
上一篇主要是讲 pkg/registry 中的代码,这一节将主要讲 pkg/apiserver 中的代码实现;
Librant
2022/06/14
4520
【K8s】cloudcfg 源码分析 01-02
这个方法比较简单,查找 labelQuery 的标签,通过 http 请求获取所有的 task 列表;
Librant
2022/07/25
3160
K8s源码分析(13)-资源的服务层接口定义
上一篇文章中,我们主要介绍了 kubernetes 资源的数据访问层, 包括接口以及相关的 etcd3 数据访问层实现,支持 dry run 的数据访问层实现。在本篇文章里, 我们主要来介绍资源的服务层接口。
TA码字
2022/02/25
4820
K8s源码分析(13)-资源的服务层接口定义
【K8s】api-server 源码分析 01-01
对于设置 etcd 存储节点的的 api-server 的启动参数,需要实例化 etcd 的客户端,用于访问 etcd 节点;
Librant
2022/06/13
6650
【K8s】api-server 源码分析 01-03
taskRegistry, controllerRegistry, serviceRegistry 三个接口是通过函数 MakeMemoryRegistry() 函数进行返回;
Librant
2022/06/19
3710
k8s first commit 源码分析之 Cloudcfg
cloudcfg 可以看做是 kubectl 的前身,负责与 API server 的交互,只存在于上古时代的 k8s 中,我们现在接触到的都是叫做 kubectl 的命令行工具了。该组件做的事情非常简单,就是将用户的命令行操作转化为对 API server 的 HTTP 请求。
菜菜cc
2022/11/15
2750
【K8s】controller-manager 源码分析 01-01
通过接口可以看到,这里是 Task/Controller/Service 资源的增删改查;
Librant
2022/06/19
5180
k8s源码分析-----kubectl(3)主要框架
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
2.7K0
k8s源码分析-----kubectl(3)主要框架
原 荐 Kubernetes Resourc
更多关于kubernetes的深入文章,请看我csdn或者oschina的博客主页。 ResoureQuota介绍 关于ResoureQuota和ResourceController的介绍和使用请参见如下官方文档。这是你理解这篇博客的基础。 https://kubernetes.io/docs/admin/resourcequota/ https://kubernetes.io/docs/admin/resourcequota/walkthrough/ https://kubernetes.io/docs
Walton
2018/04/13
2.1K0
原                    荐                                                            Kubernetes Resourc
国内 CentOS 7 安装 K8S v1.29.2(CRI:containerd),通过安装 K8S,了解 K8S 的核心概念
通过安装 K8S,了解 K8S 的核心概念:控制面、CRI、CNI、Deployment、Service、sandbox 等,本文不仅包含安装流程,而且包含丰富的 Troubeshooting 实战,以及解释这背后发生了什么。
SRE扫地僧
2024/04/27
3.6K0
国内 CentOS 7 安装 K8S v1.29.2(CRI:containerd),通过安装 K8S,了解 K8S 的核心概念
Kubernetes ReplicationController源码分析
虽然在Kubernetes v1.2中,Kubernetes推出了Deployments特性,Deployment通过创建ReplicaSet来管理Pod,ReplicaSet被视为下一代ReplicationController。但实际上ReplicaSet和ReplicationController区别仅仅是其Selector支持的类型不同。 ReplicaSet既支持equality-based selector requirements,也支持set-based selector requirem
Walton
2018/04/16
2K0
使用scheduler-framework扩展原生k8s调度器
目的:在prefilter阶段检查pod是否添加有dely注释,如果未达到对应时间则不调度
有点技术
2020/07/13
2.4K0
k8s常用操作
若出现故障,POD重生到其他的工作节点POD目录里的password.txt内容不会丢失。
后端云
2020/06/11
5250
深入 kubernetes API 的源码实现
很多同学应该像我一样,第一次打开 Github 上面 kubernetes 项目源码的时候就被各种仓库搞晕了,kuberentes 组织下有很多个仓库,包括 kubernetes、client-go、api、apimachinery 等,该从哪儿仓库看起?kubernetes 仓库应该是 kubernetes 项目的核心仓库,它包含 kubernetes 控制平面核心组件的源码;client-go 从名字也不难看出是操作 kubernetes API 的 go 语言客户端;api 与 apimachinery 应该是与 kubernetes API 相关的仓库,但它们俩为啥要分成两个不同的仓库?这些代码仓库之间如何交互?apimachinery 仓库中还有 api、apis 两个包,里面定义了各种复杂的接口与实现,清楚这些复杂接口对于扩展 kubernetes API 大有裨益。所以,这篇文章就重点关注 api 与 apimachinery 这两个仓库。
米开朗基杨
2021/04/02
1.2K0
K8s源码分析(11)-资源到schema的注册
上一篇文章的内容中,我们主要进行介绍了 kubernetes schema 这个重要概念。从数据结构角度上看,其中包括了它是如何来维护 group/version/kind 和资源 model 的对应关系,资源 model 和默认值函数的对应关系,不同资源版本之间相互转化函数的对应关系等等。从实现接口角度看, schema 实现了一系列接口,从而具备了创建资源对象,给资源对象赋默认值,识别资源对象类型,完成资源对象本版之间的转换,完成资源的 label 标签转化等功能。在本篇文章里, 我们主要介绍不同版本的资源到 schema 对象中的注册。
TA码字
2021/11/30
2K1
K8s源码分析(11)-资源到schema的注册
Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
K8s基础原理 k8s中文社区:https://www.kubernetes.org.cn/ 简介 Kubernetes与较早的集群管理系统Mesos和YARN相比,对容器尤其是 Docker的支持更加原生,同时提供了更强大的机制实现资源调度,自动 管理容器生命周期,负载均衡,高可用等底层功能,使开发者可以专注于开发应用。 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用
863987322
2018/03/29
5.1K0
Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
K8s源码分析(12)-资源的数据访问层
上一篇文章中,我们主要介绍了在 kubernetes 中不同版本的资源是如何注册到 schema 对象之中,包括内部版本资源,所有外部版本资源。以及资源的 model 类型的注册,资源的初始化函数(即默认值函数)的注册,资源的 label 转换函数的注册,和内外部版本相互转换函数的注册。在本篇文章里, 我们主要来介绍资源的数据访问层。
TA码字
2021/12/07
7100
K8s源码分析(12)-资源的数据访问层
K8s源码分析(7)-序列化的codec和codec factory
上一篇文章,主要以 serializer.json.Serializer 组件做为例子,介绍了对于 json 协议格式资源的序列化。其中包括了该组件是如何利用 decode 操作去从请求中来提取相关的 resource, 以及如何去利用 encode 操作来把相关 resource 写入到响应中去。
TA码字
2021/10/20
1K0
k8s源码分析-----kubectl(2)Factory
第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang
月牙寂道长
2018/03/06
2.7K0
k8s源码分析-----kubectl(2)Factory
相关推荐
k8s first commit 源码分析之 API Server
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档