5分钟搞定k8s集群搭建:基于kubeadm的极简实践(含避坑指南)
如果你和我一样,第一次看到Kubernetes(k8s)集群搭建的官方文档时,感觉像是翻开了一本厚重的魔法书——术语繁多、步骤冗长,光是前置条件检查就足以劝退一个下午的热情。我们需要的往往不是一本百科全书,而是一张清晰、能直达目的地的“藏宝图”。这篇文章就是为你准备的这样一张地图。它面向的是那些已经熟悉Linux基础操作,但被k8s的复杂性暂时拦在门外的开发者、运维工程师,或是任何希望在自己的开发环境、测试环境中快速拉起一个可用集群的技术实践者。我们将聚焦于最核心的路径,使用kubeadm这个官方推荐的集群引导工具,在五分钟的主干流程内,带你走完从零到“kubectl get nodes”看到Ready状态的全过程。更重要的是,我会把那些我亲自踩过、以及社区里高频出现的“坑”提前标出来,并提供经过验证的解决方案,让你在搭建过程中少走弯路,真正实现快速上手。
1. 环境准备:为k8s铺平道路
在启动任何安装命令之前,花一两分钟做好环境准备,是后续一切顺利的基石。很多人搭建失败,问题往往就出在这一步。我们需要确保三台(或更多)服务器满足最基本的要求,并且进行正确的配置。这里假设你使用的是CentOS 7或8,或者RHEL及其衍生版本。
核心要求清单:
- 机器规格:每个节点(包括控制平面和工作节点)至少需要2核CPU和2GB内存。对于纯粹的学习和功能验证,1核1GB或许能勉强启动,但极易在后续部署应用时因资源不足而失败。
- 网络互通:所有节点之间必须能够通过内网IP相互通信,这是集群组建的物理基础。
- 唯一主机名:每个节点需要设置不同的主机名,例如
k8s-master,k8s-node-1。 - 端口开放:节点间需要开放一系列端口用于组件通信。如果你使用的是云服务器,除了系统防火墙,务必在云服务商的安全组/防火墙规则中放行这些端口。
注意:以下所有命令,如无特别说明,需要在所有节点上以root权限或通过sudo执行。
首先,我们进行一系列一次性配置。这些操作主要是关闭一些可能与k8s冲突的系统服务或配置。
# 1. 关闭并禁用防火墙(根据你的安全策略,生产环境可能需要更精细的规则)
systemctl stop firewalld
systemctl disable firewalld
# 2. 关闭swap分区。Kubernetes认为swap会引入性能不稳定,要求关闭。
swapoff -a
# 永久生效:注释掉/etc/fstab中所有包含swap的行
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 3. 关闭SELinux,它可能会阻止Pod访问主机文件系统等操作。
setenforce 0
# 永久生效:将/etc/selinux/config中的SELINUX=enforcing改为SELINUX=disabled
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
# 4. 配置网络桥接流量允许iptables处理
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call

1285

被折叠的 条评论
为什么被折叠?



