k8s源码分析------kube-apiserver分析(1)

说明:此文章为腾讯云机器自动从本人csdn博客搬迁过来。是本人授权操作。

申明:无本人授权,不可转载本文。如有转载,本人保留追究其法律责任的权利。

龚浩华,QQ 29185807,月牙寂 道长

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

源码版本为v1.1.1稳定版本

从函数main开始 文件k8s.io/kubernetes/cmd/kube-apiserver/apiserver.go

我们进入k8s.io/kubernetes/cmd/kube-apiserver/app目录中的server.go

我们看到apiserver中有很多参数,我们暂时不管。NewAPIServer也只是做一些参数赋值。

我们具体看Run函数

其中有一个地方为

newEtcd的解析为:

生成了一个etcd的client,然后通过etcdhelper进行了封装。

然后将其注册到了APIGroup中

storageDestinations.AddAPIGroup("", etcdStorage)

在后面的master初始化中,将APIGroup赋给了config中

紧接着

我们继续看master中的代码k8s.io\kubernetes\pkg\master\master.go

New函数里面主要做了一些参数赋值,然后就是定义了restful的container。

关于restful这个后续再分析。

我们仅需看master.init

init中从StorageDestinations中获取到了之前注册在里面的apigroup,也就是变量为etcdStorage的etcdhelper结构体

在这里生成了一个podstorage

继续跟踪k8s.io\kubernetes\pkg\registry\pod\etcd\etcd.go

在NewStorage这个函数中其实是对etcdgeneric.Etcd的一个封装。并且最重要的参数etcdhelper传给了etcdgeneric.Etcd的Storage成员变量

我们再继续跟踪

k8s.io\kubernetes\pkg\registry\generic\etcd

在这里面呢,有一些函数对象变量,还有一个最重要的是Storage

下面以create函数为例

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

经典!Python运维中常用的几十个Python运维脚本

本文由马哥教育Python自动化实战班4期学员推荐,转载自互联网,作者为mark,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛苦贡献与付出。 fil...

4114
来自专栏高性能服务器开发

经典面试题(一)之服务器内存碎片

年前去过上海掌门集团(做无线wifi万能钥匙的那一家)和百度面试过一次,前者问了linux下gcc的malloc函数如何分配内存的,后者在二面时通过一个链表的数...

5738
来自专栏NewbieWeb

程序员基础

静态类型语言在编译时便已经确定变量的类型,而动态类型语言的变量类型要到程序运行时,待变量被赋予某个值后,才会具有某种类型

761
来自专栏Kubernetes

Kubernetes Node Controller源码分析之配置篇

Author: xidianwangtao@gmail.com Kubernetes Node Controller源码分析之执行篇 更多关于kubern...

3358
来自专栏后端技术探索

利用 PHP 名称空间编写可读且可维护的代码

“Conan 是我榜样。” 如果我在餐桌上说这句话,我儿子会以为我说的是游戏 “野蛮人柯南”,而我妻子会以为我说的是脱口秀主持人 Conan O'Brien。这...

1032
来自专栏Vamei实验室

Linux并发与同步

典型的UNIX系统都支持一个进程创建多个线程(thread)。在Linux进程基础中提到,Linux以进程为单位组织操作,Linux中的线程也都基于进程。尽管实...

2139
来自专栏大内老A

[WCF权限控制]利用WCF自定义授权模式提供当前Principal[原理篇]

在《通过扩展自行实现服务授权》一文中,我通过自定义CallContextInitializer的方式在操作方法之前之前根据认证用户设置了当前线程的安全主体,从而...

1838
来自专栏架构说

c++在编译中遇到符合不存在如何解决?

今日问题:symbol 不存在 : symbol lookup error: ./libinterface.so: undefined symbol: _ZN...

33515
来自专栏ml

C/C++ 关于生成静态库(lib)/动态库(dll)文件如何使用(基于windows基础篇)

1. 首先,如何制作一个静态库(lib)?            额, 对于静态库,我们知道,里头是不应该有Main函数,它只是一个配合文件。之所以称之为lib...

6545
来自专栏JAVA高级架构

《深入理解java虚拟机-高效并发》读书笔记

Java内存模型与线程 概述   多任务处理在现代计算机操作系统中几乎已是一项必备的功能,多任务运行是压榨手段,就如windows一样,我们使劲的压榨它运行多个...

3087

扫码关注云+社区