📅 2024年10月30日

🏆 Kubernetes集群搭建要点

⭐️ kubeadm

kubeadm会直接在宿主机上运行kubelet,如何使用容器来部署 Kubernetes的组件,在开始使用 kubeadm之前就需要安装 kubelet、kubectl、kubeadm

kubeadm init 的工作流程:

1️⃣ 首先需要进过如下的 Prefight Check流程

  1. 检查Linux的内核版本
  2. 检查Cgroup模块是否可用
  3. 主机命名是否标准(由于需要存入 etcd)
  4. kubeadm和kubelet版本是否匹配
  5. 机器上是否以及安装了 Kubernetes的二进制文件
  6. 依赖命令是否以及存在
  7. 检查容器运行时
  8. .....

2️⃣ 通过 check之后就会生成 Kubernetes对外提供服务所需要的各种证书和对应目录,比如 /etc/kubernetes/pki,就是用于存储集群生成的证书,包括k8s对外提供服务的证书,以及 api server等一些证书(Kubernetes 集群除非特定的”非安全模式“都需要使用到 https)

3️⃣ 随后 kubeadm创为 Master组件生成 pod配置的文件,存储至 /etc/kubernetes/manifests,kubelet通过 Static Pod将这些pod的 yaml文件执行,之后通过同样的方式启动 etcdkubeadm会通过自动检查 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扮演了一个安全验证的角色

image-20241030151259212