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.confKubeconfig配置:包含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网络就绪