如何在CentOS上部署Kubernetes以满足客户需求?
手把手教你用CentOS部署Kubernetes,轻松搞定容器编排
最近公司项目要上容器化部署,领导让我研究下Kubernetes(简称K8s)的搭建,说实话,一开始看到那些密密麻麻的配置文件和命令行参数,我头都大了,不过经过几天折腾,终于在CentOS上成功部署了K8s集群,现在把经验分享给大家,保证让零基础的小伙伴也能看懂。

为什么选CentOS?
很多人问为啥不用Ubuntu或者Red Hat?其实CentOS在服务器领域一直很稳,特别是CentOS 7和8版本,对Docker和K8s的支持都相当成熟,而且公司服务器用的就是CentOS,直接在生产环境复现测试环境,能避免很多兼容性问题。
前期准备:三台虚拟机起步
我这次部署用了三台CentOS 7.9虚拟机:
- master节点:192.168.1.100(2核4G)
- worker节点1:192.168.1.101(2核4G)
- worker节点2:192.168.1.102(2核4G)
关键配置:
- 关闭防火墙(生产环境建议用firewalld规则)
systemctl stop firewalld systemctl disable firewalld
- 关闭SELinux(临时关闭用
setenforce 0
,永久关闭要改配置文件)sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
- 修改主机名(方便识别)
hostnamectl set-hostname k8s-master # 其他节点同理
- 配置hosts文件(所有节点都要改)
cat >> /etc/hosts <<EOF 192.168.1.100 k8s-master 192.168.1.101 k8s-node1 192.168.1.102 k8s-node2 EOF
安装Docker:K8s的容器引擎
K8s需要Docker作为底层容器运行时,这里用19.03版本(K8s官方推荐):
yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io systemctl start docker systemctl enable docker
小技巧:修改Docker配置文件,让容器日志不占满磁盘

cat >> /etc/docker/daemon.json <<EOF { "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } } EOF systemctl restart docker
部署K8s核心组件
添加K8s源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled=1 gpgcheck=0 EOF
安装kubeadm/kubelet/kubectl
yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15 systemctl enable kubelet
初始化主节点
kubeadm init \ --apiserver-advertise-address=192.168.1.100 \ --pod-network-cidr=10.244.0.0/16 \ --kubernetes-version v1.20.15
注意:初始化成功后会有join命令,一定要保存好!类似这样:
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
部署网络插件(Flannel)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
加入工作节点
在worker节点执行之前保存的join命令,
kubeadm join 192.168.1.100:6443 --token abcdef.0123456789abcdef \ --discovery-token-ca-cert-hash sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
在master节点验证:
kubectl get nodes
看到所有节点状态变成Ready就成功了!
常见问题解决
- swap未关闭:K8s要求关闭swap,可以在
/etc/fstab
中注释掉swap分区 - 镜像拉取失败:国内环境建议配置阿里云镜像加速器
- 版本不匹配:kubeadm/kubelet/kubectl版本必须一致
测试部署
部署个nginx测试下:
kubectl create deployment nginx --image=nginx:1.21 kubectl expose deployment nginx --port=80 --type=NodePort kubectl get svc
用浏览器访问任意worker节点的IP+NodePort,看到nginx欢迎页面就大功告成了!
整个过程看起来步骤多,其实按部就班来并不难,关键是要理解每个组件的作用,
- kubeadm:初始化集群的"装修队长"
- kubelet:每个节点的"管家"
- kubectl:集群管理的"遥控器"
建议新手先用虚拟机练手,等熟悉了再上生产环境,遇到问题多看日志,K8s的错误信息其实挺详细的,最后提醒:生产环境一定要做好备份和监控!
CentOS节点该如何成功加入集群实现基础整合?
« 上一篇
2025-08-13
CentOS安装Minikube时存在哪些风险预警?
下一篇 »
2025-08-13
文章评论