kubeadm工作机制分析

更多关于kubernetes的深入文章,请看我csdn或者oschina的博客主页。

介绍

kubeadm一共提供了5个子命令:

  • kubeadm init
  • kubeadm join
  • kubeadm token
  • kubeadm reset
  • kubeadm version

这个可以在k8s v1.5.0 代码中cmd/kubeadm/app/cmd/cmd.go:29看到:

func NewKubeadmCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cobra.Command {
	cmds := &cobra.Command{
		Use:   "kubeadm",
		Short: "kubeadm: easily bootstrap a secure Kubernetes cluster",
		...
	}
	cmds.ResetFlags()
	cmds.SetGlobalNormalizationFunc(flag.WarnWordSepNormalizeFunc)

	cmds.AddCommand(NewCmdInit(out))
	cmds.AddCommand(NewCmdJoin(out))
	cmds.AddCommand(NewCmdReset(out))
	cmds.AddCommand(NewCmdToken(out))
	cmds.AddCommand(NewCmdVersion(out))

	return cmds
}

其中kubeadm init 和join两个子命令是最为关键的。通过在master上执行kubeadm init,完成master的初始化,然后再在其他node上执行kube join将node加入到cluster,即可完成一套安全集群的搭建。

更多关于kubeadm的介绍和入门知识,请参考一下官方文档:

废话不多说,通过阅读kubernetes v1.5.0源码后,下面分别给出kube init和join两个子命令的工作流程图,据此你就能了解其工作机制。

kubeadm init工作机制

kubeadm join工作机制

##总结

  • kubeadm init主要工作:
    • 创建集群安全相关的的key、certs和conf文件。
    • 创建kube-apiserver、kube-controller-manager、kube-scheduler、etcd(如果没有配置external etcd)这些static pod的json格式的manifest文件,kubelet负责启动这些master组件。
    • 通过addons方式启动kube-discovery deployment、kube-proxy daemonSet、kube-dns deployment。
  • kubeadm join主要负责创建kubelet.conf,使kubelet能与API Server建立连接:
    • 访问kube-discovery服务获取cluster info(包含cluster ca证书、API Server endpoint列表和token。
    • 利用定的token,检验cluster info的签名。
    • 检验成功后,再与API Server建立连接,请求API Server为该node创建证书。
    • 根据获取到的证书创建kubelet.conf。

更多关于kubernetes的深入文章,请看我csdn或者oschina的博客主页。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏喵了个咪的博客空间

[喵咪BELK实战(2)] elasticsearch+kibana搭建

[喵咪BELK实战(2)] elasticsearch+kibana搭建 ? 前言 上一节我们介绍了日志系统和BELK之后就要到激动人心的安装环境了,实践出真知...

3537
来自专栏守望轩

Visual Studio 2008 每日提示(二十九)

#291、启动时没有用户代码发出警告 原文链接:What warning message is suppressed by the Warn If No Us...

3865
来自专栏有困难要上,没有困难创造困难也要上!

Error: PyInstaller for Python 2.6+ on Windows needs pywin32.

3415
来自专栏后端技术探索

nginx实现内容重定向的两种方式:rewrite和反向代理

当访问test.cc/uri,如果uri资源在项目中不存在,就会重定向 http://www.yuhaiwei.net/blog/Api_element 网页。

771
来自专栏逸鹏说道

ifconfig: command not found CentOS专版,其他的可以参考

ifconfig: command not found ? 查看path配置(echo相当于c中的printf,C#中的Console.WriteLine) e...

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

如何在Ubuntu 18.04上使用LEMP将Symfony 4应用程序部署到生产中

Symfony是一个开源PHP框架,具有优雅的结构和声誉,无论其大小如何,都是一个适合启动任何项目的框架。作为一组可重用的组件,其灵活性,体系结构和高性能使其成...

1777
来自专栏伦少的博客

centos7 hadoop 单机模式安装配置

转载请务必注明原创地址为:http://dongkelun.com/2018/03/23/hadoopConf/

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

如何在Ubuntu 14.04上优化Tomcat安装

Tomcat是Java Servlet和JavaServer Pages技术的流行实现。它由Apache Software Foundation根据流行的Apa...

540
来自专栏菩提树下的杨过

haproxy 新手上路

apache、nginx之类的反向代理(转发)功能,通常只能用于http协议,其它协议就不好使了(注:nginx据说商业版的,支持tcp协议了)。 haprox...

2388
来自专栏一个爱瞎折腾的程序猿

jenkins在windows服务器上执行含git push命令的脚本权限不足的解决方法

3172

扫码关注云+社区

领取腾讯云代金券