您现在的位置是:首页 > 文章详情

kubeadm工作机制分析

日期:2018-12-12点击:369

介绍 

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。

本文转自开源中国-kubeadm工作机制分析

原文链接:https://yq.aliyun.com/articles/679212
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章