k8s源码分析-----kubelet(2)dockerClient

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

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

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

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

源码为k8s v1.1.1稳定版本

kubelet代码比较复杂,主要是因为其担负的任务比较多。下面我们将慢慢的分析

二、模块分析

2.1 、dockerClient

代码在k8s.io/kubernetes/cmd/kubelet/app中

1、结构体中

type KubeletServer struct {

...

DockerEndpoint string

....

}

2、flag解析

func (s *KubeletServer) AddFlags(fs *pflag.FlagSet) {

...

    fs.StringVar(&s.DockerEndpoint, "docker-endpoint", s.DockerEndpoint, "If non-empty, use this for the docker endpoint to communicate with")

...

}

其实就是dockerEndpoint的地址配置项

3、第一步初始化

func (s *KubeletServer) KubeletConfig() (*KubeletConfig, error) {

3.1 dockertools

k8s.io\kubernetes\pkg\kubelet\dockertools\docker.go

很简单看代码就好

3.2 go-dockerclient

github.com\fsouza\go-dockerclient

这里主要是一个开源的第三方的go-dockerclient

从下面的来看其实就是封装了一个httpclient

下面是结构体

我们看看client都提供了那些操作(截图不全,只是示例)

我们看看creatcontainer的操作

其实就是构建一个post请求,然后调用client.do

下面是client.do,我们看到了其实就是个一httpRequest,然后调用了httpclient.Do(Request)

4、继续传递

将封装好的go-dockerclient传递到了Kubelet中

func createAndInitKubelet

然后又进行了一层包装

func NewMainKubelet(

5、继续包装

将其包装成我们需要的

k8s.io\kubernetes\pkg\kubelet\dockertools\docker.go

主要的接口如下

我们看看下面提供的接口,与上面的接口一致

我们再看看CreaterContainer

其实就是调用了go-dockerclient中的Createcontainer

6、总结

dockerclient,就是一个httpclient的封装,其中做了两层的封装。

第一层是github.com\fsouza\go-dockerclient开源的dockerclient

第二层是DockerInterface的封装

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据之美

ssh 双机互信:免密码登录设置步骤及常见问题

在 linux 系统管理中,设置免密码登录,进行机器的批量管理是最常用的一个方法。比如针对几十甚至上百台线上机器,通常我们会设置一台“发布机”作为中央控制机对其...

31910
来自专栏FreeBuf

忘记密码咋办?本地密码检索工具 – LaZagne Project

简介 LaZagne project 是一款用于检索大量存储在本地计算机上密码的开源应用程序。每款软件他们保存密码的方法或许不尽相同(明文,API,算法,数据...

1977
来自专栏玄魂工作室

CTF实战14 任意文件上传漏洞

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

6293
来自专栏云计算教程系列

如何使用InspIRCd 2.0和Shaltúre在Ubuntu 14.04上设置IRC服务器

本教程介绍如何在Ubuntu 14.04上安装和配置InspIRCd 2.0,一个IRC服务器。在您自己的服务器上安装可以让您灵活地管理用户,更改他们的缺口,更...

1484
来自专栏北京马哥教育

邮件原理你真的造吗

一、前言 虽然现在QQ、微信等即时聊天工具原来越盛行,但是在企业与企业之间大部分还是会使用邮件系统进行信息交换。所以作为运维人员,更需要了解这个技术的原理...

42915
来自专栏安恒信息

如何防御SSRF攻击

很多web应用都提供了从其他的服务器上获取数据的功能。使用用户指定的URL,web应用可以获取图片,下载文件,读取文件内容等。这个功能如果被恶意使用,可以利用存...

4039
来自专栏魏艾斯博客www.vpsss.net

lnmp 安装 SSL 证书之后做 301 重定向的经验和补充内容

2775
来自专栏农夫安全

【端口渗透】21端口vsftpd服务后门

准备写一个专门关于端口渗透的一些小集合,每一篇代表一个端口对应的渗透方法,算不上什么牛逼的技术,但是对于实战时候还是具有一定的参考价值,之前已经发放了大概4-5...

4744
来自专栏IT可乐

zookeeper 集群搭建

  通过 VMware ,我们安装了三台虚拟机,用来搭建 zookeeper 集群,虚拟机网络地址如下:

924
来自专栏高爽的专栏

Cookie深度解析

最近在公司做了Web端单点登录(SSO)功能,基于Cookie实现,做完之后感觉有必要总结一下,本文着重讲解Cookie,下文会说明单点登录的实现方...

2090

扫码关注云+社区