📅 2024年10月30日
🏆 Kubernetes集群搭建要点
⭐️ kubeadm
kubeadm会直接在宿主机上运行kubelet,如何使用容器来部署 Kubernetes
的组件,在开始使用 kubeadm
之前就需要安装 kubelet、kubectl、kubeadm
kubeadm init
的工作流程:
1️⃣ 首先需要进过如下的 Prefight Check
流程
- 检查Linux的内核版本
- 检查Cgroup模块是否可用
- 主机命名是否标准(由于需要存入
etcd
) - kubeadm和kubelet版本是否匹配
- 机器上是否以及安装了
Kubernetes
的二进制文件 - 依赖命令是否以及存在
- 检查容器运行时
- .....
2️⃣ 通过 check
之后就会生成 Kubernetes
对外提供服务所需要的各种证书和对应目录,比如 /etc/kubernetes/pki
,就是用于存储集群生成的证书,包括k8s对外提供服务的证书,以及 api server
等一些证书(Kubernetes
集群除非特定的”非安全模式“都需要使用到 https
)
3️⃣ 随后 kubeadm
创为 Master
组件生成 pod
配置的文件,存储至 /etc/kubernetes/manifests
,kubelet
通过 Static Pod
将这些pod的 yaml
文件执行,之后通过同样的方式启动 etcd
,kubeadm
会通过自动检查 localhost:6443/healthz
等待 master
组件全部运行完毕
4️⃣ 在 init
执行完毕后会为集群自动生成一个 bootstrap token
,方便后续节点加入,随后kubeadm会将 ca.crt
等节点重要的信息存储在 configmap
中
kubeadm join 工作流程
需要通过 bootstrap token
来进行添加,为什么需要这个 token
?因为任何一台机器想成为k8s内的一个节点,就必须在集群的kube-apiserver 上注册,要想和 api-server
打交道就需要获取相应的 Ca
证书文件,为了可以一键安装,自然不能去master节点上去复制 CA
文件,所以就需要发起一次 ”非安全模式“的访问,从api-server中拿到保存在 configmap
证书信息,在此过程中 bootstrap token
扮演了一个安全验证的角色
