kubeadm是什么?
kubeadm 是 Kubernetes 官方提供的一个用于快速部署和管理 Kubernetes 集群的命令行工具。它简化了集群的初始化、节点加入和升级过程,特别适合在生产环境或学习环境中快速搭建符合最佳实践的 Kubernetes 集群。

kubeadm 的定位
-  不是完整的部署解决方案:kubeadm 只负责集群的“骨架”搭建,不直接提供网络插件(CNI)、负载均衡器、存储插件等,需要用户自行安装)。 
-  轻量且灵活:适合需要自定义配置的场景(如选择不同的网络插件或容器运行时)。 
-  官方推荐工具:尤其适合需要生产级集群但希望避免复杂手动配置的用户。 
kubeadm 的核心功能
-  初始化集群 -  通过 kubeadm init命令一键初始化控制平面(Control Plane),包括 API Server、Controller Manager、Scheduler 等核心组件。
-  自动生成集群所需的证书、配置文件和服务账户。 
 
-  
-  加入节点 -  通过 kubeadm join命令将工作节点(Worker Node)加入集群,自动配置 kubelet 和容器运行时(如 Containerd、Docker)。
 
-  
-  集群升级 -  支持通过 kubeadm upgrade安全升级 Kubernetes 版本。
 
-  
-  符合最佳实践 -  默认配置遵循 Kubernetes 官方安全标准(如启用 TLS 加密、RBAC 等)。 
 
-  
是否有同类工具?
| 工具 | 特点 | 
|---|---|
| kubeadm | 官方维护,轻量灵活,适合自定义生产集群。 | 
| kops | 更适合在 AWS 等云平台自动化部署生产集群。 | 
| Minikube | 单节点本地开发工具,不适合生产。 | 
| Kind | 基于 Docker 的轻量测试集群,适合 CI/CD 测试。 | 
还有就与二进制文件的本地化安装。
kubeadm和其他组件的关系
在部署 Kubernetes 集群之前,需要先安装 kubeadm 工具。
kubeadm 是 Kubernetes 官方提供的集群部署工具,但它本身只是工具链的一部分,还需要安装其他依赖组件(如 kubelet、kubectl 和容器运行时)。
Kubernetes 集群部署的基本步骤
-  安装依赖: kubeadm、kubelet、kubectl。
-  配置容器运行时: containerd或Docker。
-  禁用 Swap。 
-  初始化集群: kubeadm init。
-  安装 CNI 插件:如 Calico、Flannel。 
-  加入 Worker 节点: kubeadm join。
这样,你就成功使用 kubeadm 部署了一个 Kubernetes 集群!
kubeadm 和容器运行时谁先安装?
从 1.24 开始,Kubernetes 移除了内置的 dockershim,因此必须显式安装兼容的容器运行时(如 containerd)。那么涉及 Kubernetes 依赖的容器运行时(Container Runtime)的安装顺序。
-  kubeadm 本身不依赖容器运行时,你可以在安装 kubeadm之前或之后安装容器运行时(如containerd或Docker)。
-  但 Kubernetes 集群运行需要容器运行时。在初始化集群( kubeadm init)时,kubelet会检查节点是否已安装兼容的容器运行时,如果未安装,集群初始化会失败。
所以可以先安装 kubeadm,但必须在执行 kubeadm init 或 kubeadm join 前确保容器运行时已正确安装并配置。
推荐的安装顺序:
1、安装容器运行时(必须提前完成):
# Ubuntu/Debian
sudo apt install -y containerd
sudo systemctl enable --now containerd
# 生成并修改配置(启用 systemd cgroup 驱动)
containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
sudo systemctl restart containerd2、安装 kubeadm:
sudo apt install -y kubeadm kubelet kubectl
sudo apt-mark hold kubeadm kubelet kubectl  # 防止自动升级3、初始化集群:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16


















