如何在CentOS上有效部署Kubernetes管理系统?
手把手教你用CentOS部署Kubernetes,轻松搞定容器编排
最近公司项目组打算把老旧的虚拟机架构换成容器化部署,我负责研究Kubernetes的落地方案,经过一周折腾,终于在CentOS 7.9上成功部署了单节点集群,这里把踩过的坑和实操经验分享给大家。

为什么选CentOS?
很多人纠结CentOS和Ubuntu哪个更适合K8s,其实两个系统都能跑,但CentOS在企业级应用中更常见,我们团队之前用CentOS部署过OpenStack,运维同学对yum包管理更熟悉,而且CentOS 7的生命周期到2024年,短期不用担心系统升级问题。
部署前必做的准备工作
- 硬件配置:建议至少4核8G内存,我测试时用2核4G跑起来有点吃力,特别是同时拉取镜像时CPU直接飙到90%
- 网络配置:关闭防火墙(生产环境建议配置安全组规则),关闭SELinux(
setenforce 0
),修改主机名(hostnamectl set-hostname k8s-master
) - 时间同步:
yum install -y ntpdate && ntpdate time.windows.com
,K8s组件对时间敏感,不同步会导致证书验证失败
安装Docker容器引擎
K8s 1.24开始弃用了dockershim,但很多老项目还在用Docker,这里还是演示Docker安装:
# 添加Docker仓库 yum install -y yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装指定版本(19.03.15兼容性最好) yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io # 配置镜像加速器(阿里云示例) mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"] } EOF systemctl enable --now docker
安装K8s核心组件
-
添加K8s仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64 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
-
安装kubeadm/kubelet/kubectl
# 指定1.23.17版本(与Docker 19.03兼容) yum install -y kubelet-1.23.17 kubeadm-1.23.17 kubectl-1.23.17 --disableexcludes=kubernetes systemctl enable --now kubelet
初始化K8s集群
关键命令来了,这里要特别注意--pod-network-cidr
参数:

kubeadm init \ --apiserver-advertise-address=192.168.1.100 \ --pod-network-cidr=10.244.0.0/16 \ --kubernetes-version v1.23.17
执行后会出现类似这样的提示:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
部署网络插件(Flannel)
K8s默认没有网络插件,必须手动安装:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
等待几分钟后,执行kubectl get pods -n kube-system
,看到所有Pod都是Running状态就成功了。
常见问题排查
- 镜像拉取失败:检查
/etc/docker/daemon.json
的镜像加速器配置 - 证书过期:
kubeadm certs check-expiration
查看证书有效期,快到期时用kubeadm certs renew all
更新 - CNI冲突:如果之前装过其他网络插件,需要先清理:
kubectl delete -f <旧插件yaml>
生产环境优化建议
- 高可用部署:至少3个master节点,用
kubeadm init --control-plane-endpoint
配置VIP - 资源限制:在
/etc/kubernetes/manifests/kube-apiserver.yaml
中添加--max-requests-inflight
参数 - 监控告警:部署Prometheus+Grafana,设置资源使用率阈值告警
这次部署让我深刻体会到,K8s虽然强大,但细节处理不好就会踩坑,比如Flannel的CIDR配置必须和kubeadm初始化时的参数一致,否则Pod之间无法通信,建议大家部署时先在测试环境验证,生产环境再逐步迁移。
最后分享个小技巧:把所有安装命令写成Shell脚本,配合Ansible批量部署,能节省大量时间,如果遇到具体问题,欢迎在评论区交流,我看到都会回复。
一元50个赞秒到平台-快手增粉软件
« 上一篇
2025-06-10
自助下单平台10个赞-下载抖音涨粉丝软件
下一篇 »
2025-06-10