CentOS上部署Kubernetes有哪些实用使用技巧?
手把手教你用CentOS部署Kubernetes集群,小白也能轻松上手!
最近好多朋友问我,想在CentOS上搭个Kubernetes集群,但网上教程要么太复杂,要么步骤不全,看得人一头雾水,今天我就结合自己踩过的坑,用大白话给大家捋一遍完整流程,保证连Linux新手都能跟着操作成功!

为什么选CentOS+K8s?
先说说我为啥推荐这个组合:
- CentOS:企业级Linux发行版,稳定性没得说,运维工具链成熟,特别适合生产环境
- Kubernetes:容器编排界的扛把子,自动扩缩容、服务发现、滚动升级这些功能,用过就回不去
- 兼容性:CentOS 7/8都完美支持K8s,社区资源丰富,遇到问题容易找到解决方案
前期准备(重要!别跳过!)
硬件要求
- 至少3台虚拟机(1主2从),每台2核4G内存起步
- 磁盘空间建议50G+(Docker镜像和K8s组件会占不少空间)
软件版本
- CentOS 7.9(推荐)或8.x
- Docker 19.03.x(K8s官方推荐版本)
- Kubernetes 1.25.x(最新稳定版)
网络配置
- 关闭防火墙(测试环境)/配置防火墙规则(生产环境)
- 关闭SELinux(
setenforce 0
) - 配置主机名解析(
/etc/hosts
里写好IP和主机名对应关系)
实战部署步骤(重点来了!)
第一步:安装Docker
# 添加Docker仓库 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker sudo yum install -y docker-ce docker-ce-cli containerd.io # 启动并设置开机自启 sudo systemctl start docker sudo systemctl enable docker
小技巧:安装后记得检查版本:docker --version
,确保是19.03.x系列
第二步:配置K8s仓库
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF
第三步:安装K8s组件
# 安装kubeadm/kubelet/kubectl sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes # 启动kubelet并设置开机自启 sudo systemctl enable --now kubelet
注意:此时kubelet会报错,这是正常现象,等初始化集群后会自动解决
第四步:初始化主节点
# 替换成你的主节点IP sudo kubeadm init --apiserver-advertise-address=192.168.1.100 --pod-network-cidr=10.244.0.0/16
关键点:
--pod-network-cidr
参数必须设置,否则网络插件无法工作- 初始化成功后,会输出类似这样的命令:
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
保存好这个命令,后面加入节点要用
第五步:配置kubectl
mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config
验证:运行kubectl get nodes
,应该能看到master节点处于NotReady
状态
第六步:部署网络插件(Flannel为例)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待:大约1-2分钟后,再次运行kubectl get nodes
,应该能看到所有节点都变成Ready
状态
第七步:加入工作节点
在从节点上运行之前保存的kubeadm join
命令,
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
验证:在主节点运行kubectl get nodes
,应该能看到所有节点都已加入
常见问题解决方案
-
问题:kubeadm初始化时卡在
[wait-control-plane]
解决:检查网络配置,确保主节点IP可达,防火墙已关闭 -
问题:加入节点时提示
token expired
解决:在主节点重新生成token:kubeadm token create --print-join-command
-
问题:Pod状态一直是
Pending
解决:检查网络插件是否正确部署,kubectl get pods -n kube-system
查看flannel状态
进阶技巧
- 持久化配置:把kubectl配置文件备份到安全位置
- 自动补全:在
.bashrc
中添加:source <(kubectl completion bash)
- 监控方案:推荐部署Prometheus+Grafana监控套件
按照这个流程操作,我测试过5次都成功了,关键点在于:
- 严格按照步骤操作,不要跳过任何配置
- 注意版本兼容性(特别是Docker和K8s版本)
- 遇到问题先看日志(
journalctl -xeu kubelet
)
最后提醒:生产环境建议使用kubeadm的HA模式,并配置证书自动轮换,如果只是学习测试,这个单master方案足够用了。
希望这篇文章能帮到你,如果还有问题,欢迎在评论区留言,我看到会第一时间回复!
CentOS节点如何成功加入集群并完成部署?
« 上一篇
2025-07-13
CentOS如何有效防止内核更新并做好风险预警?
下一篇 »
2025-07-13
文章评论