不会飞的章鱼

熟能生巧,勤能补拙;念念不忘,必有回响。

kubeadm init流程概览

kubeadm init流程

  • 1,引导前的检查
  • 2,生成私钥和数字证书
  • 3,生成控制平面组件kubeconfig文件
  • 4,生成控制平面组件manifest文件
  • 5,下载镜像,等待控制平面启动
  • 6,保存MasterConfiguration
  • 7,设定Master标志
  • 8,进行基于TLS的安全引导相关配置
  • 9,安装DNS和kube-proxy插件

引导前检查

kubeadm init pre-flight check:

  • kubeadm版本与要安装的kubernetes版本的比对检查
  • kubernetes安装的系统需求检查
  • 其他检查:用户、主机、端口、swap、工具等

生成私钥和数字证书

kubeadm init生成的私钥与证书:

  • 自建CA,生成ca.key和ca.crt
  • apiserver的私钥与公钥证书
  • apiserver访问kubelet使用的客户端私钥与证书
  • sa.key和sa.pub
  • Etcd相关私钥和数字证书

生成控制平面组件kubeconfig文件

组成kubeconfig文件:

  • .kube/config、/etc/kubernetes/*.conf与KUBECONFIG环境变量

    1
    2
    #echo $KUBECONFIG
    /etc/kubernetes/admin.conf
  • Kubeconfig配置:包含cluster、user、和context信息

  • 允许kubectl快速切换context,管理多集群

生成控制平面组件manifest文件

组成manifest文件:

  • /etc/kubernetes/manifest
  • 控制平面组件以Static Pod形式运行
  • kubelet读取manifest目录并管理各控制平台组件Pod启动和停止

下载镜像并等待控制平面启动

kubeadm依赖kubelet下载镜像并启动static pod:

  • 从k8s.gcr.io上面的下载组件镜像
  • kubeadm会一直探测并等待localhost:6443/healthz服务返回成功
  • 这一过程后,控制平面主要组件都启动Ok

安装DNS和kube-proxy插件

安装Addons:

  • 以DaemonSet方式部署Kube-proxy

  • 部署Kube-dns(也可以用CoreDNS替代)

  • DNS插件Pending状态,直到cluster网络就绪

------ 本文结束------
如果本篇文章对你有帮助,可以给作者加个鸡腿~(*^__^*),感谢鼓励与支持!