kubeadm 工作流程
方法:
把 kubelet 直接运行在宿主机上,然后使用容器部署其他的 k8s 组件
kubeadm init 的工作流程
Preflight Checks
生成证书和对应目录
证书路径 Master 节点 /etc/kubernetes/pki 下
+ 外界访问 kube-apiserver 证书{ca.crt}
+ kube-apiserver 请求 kubelet 证书{apiserver-kubelet-client.crt}
...
手动拷贝证书到 /etc/kubernetes/pki 下, kubeadm 会跳过生成证书这一步骤
- 生成配置文件
配置路径 /etc/kubernetes/xxx.conf
- kubeadm 会为 Master 组件生成 Pod 配置文件
三个 Master 组件
+ kube-apiserver
+ kube-controller-manager
+ kube-scheduler
一个额外组件:
+ etcd
组件 YAML 文件路径 /etc/kubernetes/manifests 下
组件特殊启动方式(Staic Pod):
kubelet 启动时,会自动检查这个目录, 加载所有的 Pod YAML 文件, 并启动它们。
查看 Master 组件健康度 localhost:6443/healthz
- 生成 bootstrap token
使用这个 token 来 kubeadm join 这个集群
- 保存配置
kubeadm 会将 Master 各个重要信息通过 ConfigMap 的方式保存到 Etcd 中
提供给 Node 节点使用
ConfigMap 的名字是 cluster-info
- 安装默认插件
- kube-proxy(服务发现)
- DNS(域名解析)
kubeadm join 的工作流程
- 使用 token 安全验证到 kube-apiserver, 拿到保存在 ConfigMap 中的 cluster-info
这个连接是一个 "不安全模式"
- 之后使用 cluster-info 中的地址、端口、证书, Node 就可以和 Master 建立起"安全模式"