K8s零基础集群搭建实战:从三台CentOS开始

很多新手提到K8s集群搭建就觉得门槛高,其实只要理清准备工作和执行顺序,跟着命令行一步步操作,三台虚拟机就能跑起来一套完整的Kubernetes环境。
本文围绕K8s零基础集群搭建实战,帮你跳过常见的坑,直接拿到可验证的结果。

准备工作:硬件、系统和网络规划

建议准备三台CentOS 7.9虚拟机,每台分配2核CPU、4GB内存和50GB磁盘。操作系统要求Linux内核版本3.10以上(CentOS 7默认符合)。防火墙和SELinux需要关闭或做兼容配置,否则kubeadm初始化会报错。
先确保三台机器能互相通信,主机名和IP映射写入/etc/hosts。示例:

192.168.1.10 master
192.168.1.11 node1
192.168.1.12 node2

所有节点需要关闭交换分区,因为kubelet必须关闭swap才能正常工作。
执行以下命令并注释/etc/fstab中swap行后重启:

swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

另外,需要配置Docker和K8s的yum源,建议使用阿里云镜像加速。

核心步骤:安装容器运行时并用kubeadm初始化集群

1. 安装Docker(所有节点)

yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker

2. 安装kubeadm、kubelet和kubectl(所有节点)

cat < /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
EOF
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet

3. 主节点初始化(仅在master执行)

kubeadm init --apiserver-advertise-address=192.168.1.10 --pod-network-cidr=10.244.0.0/16

这里--pod-network-cidr指定Pod网络地址范围,后续安装Flannel时需要一致。
初始化成功后屏幕会输出kubeadm join命令,请复制保存,后面工作节点需要用。

接着配置kubectl环境:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

4. 安装Pod网络插件(Flannel)

在主节点执行:

kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml

等待几分钟后,kubectl get pods -n kube-system可以看到flannel相关Pod状态变为Running。

5. 工作节点加入集群

在node1和node2上执行刚才保存的kubeadm join命令,如果当时没保存,可以在master上通过kubeadm token create --print-join-command重新生成。
加入成功后,主节点执行kubectl get nodes看到所有节点Ready即初步完成。

新手最容易踩的坑

坑一:初始化时提示"kubelet isn't running"。 原因是swap未完全关闭或/etc/fstab中注释不彻底。
检查free -h确认swap为0,并查看/etc/fstab中h没有swap相关行。

坑二:flannel一直处于Pending。 通常因为Pod网络CIDR与初始化时指定的不一致。
检查/etc/cni/net.d/目录下的配置文件,如果flannel自动生成的CIDR是10.244.0.0/16,而初始化用的是其他网段,则需修改flannel配置或重做初始化。

坑三:节点状态显示NotReady。 使用kubectl describe node 查看Conditions,常见原因是CNI插件未就绪或kubelet无法拉取镜像。
检查各节点能否访问registry.k8s.io,如果不行请配置镜像代理。

坑四:kubectl命令提示"Unable to connect to the server: dial tcp...". 可能是kubeconfig文件权限或路径不对。
重新执行mkdir -p $HOME/.kube && cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

部署一个Nginx验证集群可用性

用命令创建一个简单的Deployment来验证集群能否正常工作:

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort

查看Pod是否运行:

kubectl get pods

查看服务暴露出的NodePort端口:

kubectl get svc nginx

拿到端口号(例如30080),在浏览器访问任意节点的IP加端口,比如http://192.168.1.10:30080,如果看到Nginx默认欢迎页,说明整个集群搭建成功。

如果你正在处理K8s零基础集群搭建实战,建议先按本文步骤完整执行一遍,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分,大多数报错都能在本教程中找到对应解法。

分享到:
上一篇
Docker离线部署无网络环境安装
下一篇
K8s Pod管理与资源限制配置
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意