【原创】k8s源码分析-----kubelet(2)dockerClient
2016-04-07 19:21
681 查看
本人空间链接:http://user.qzone.qq.com/29185807/blog/1460023494
源码为k8s v1.1.1稳定版本
kubelet代码比较复杂,主要是因为其担负的任务比较多。下面我们将慢慢的分析
...
DockerEndpoint string
....
}
...
fs.StringVar(&s.DockerEndpoint, "docker-endpoint", s.DockerEndpoint, "If non-empty, use this for the docker endpoint to communicate with")
...
}
其实就是dockerEndpoint的地址配置项
很简单看代码就好
这里主要是一个开源的第三方的go-dockerclient
从下面的来看其实就是封装了一个httpclient
下面是结构体
我们看看client都提供了那些操作(截图不全,只是示例)
我们看看creatcontainer的操作
其实就是构建一个post请求,然后调用client.do
下面是client.do,我们看到了其实就是个一httpRequest,然后调用了httpclient.Do(Request)
func createAndInitKubelet
然后又进行了一层包装
func NewMainKubelet(
k8s.io\kubernetes\pkg\kubelet\dockertools\docker.go
主要的接口如下
我们看看下面提供的接口,与上面的接口一致
我们再看看CreaterContainer
其实就是调用了go-dockerclient中的Createcontainer
第一层是github.com\fsouza\go-dockerclient开源的dockerclient
第二层是DockerInterface的封装
龚浩华
qq 月牙寂 29185807
2016年4月7日
(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)
源码为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的封装
龚浩华
qq 月牙寂 29185807
2016年4月7日
(版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转载的,保留追究其侵权的权利。)
相关文章推荐
- Docker基础技术:Linux Namespace(下)
- Docker基础技术:Linux Namespace(上)
- docker 及 linux 初接触
- Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
- use docker to setup building environment for a project
- docker
- Docker初学
- docker实用命令(持续更新)
- Docker查看 启动容器
- docker 问题
- DOCKER源码分析(一):DOCKER架构
- 使用PipWork解决docker 网络连接问题
- Docker问题(Get http:///var/run/docker.sock/v1.20/version:dial unix /var/run/docker.sock: no such file)
- Docker常用命令
- MySQL(6)--复制,docker容器中
- (OK) Install Docker on Fedora 23
- container docker
- 我一直在centos7上面安装docker不成功,用下面的办法解决,就是换了一个epel源
- Docker容器环境检测方法【代码】
- Docker私有仓库Registry的搭建验证