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 containerd
2、安装 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