如何在CentOS上部署Kubernetes以满足客户需求?

代码编程 2025-08-13 1171

手把手教你用CentOS部署Kubernetes,轻松搞定容器编排

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

CentOS部署Kubernetes-客户需求-客户需求

为什么选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)

关键配置

  1. 关闭防火墙(生产环境建议用firewalld规则)
    systemctl stop firewalld
    systemctl disable firewalld
  2. 关闭SELinux(临时关闭用setenforce 0,永久关闭要改配置文件)
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  3. 修改主机名(方便识别)
    hostnamectl set-hostname k8s-master
    # 其他节点同理
  4. 配置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配置文件,让容器日志不占满磁盘

CentOS部署Kubernetes-客户需求-客户需求
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就成功了!

常见问题解决

  1. swap未关闭:K8s要求关闭swap,可以在/etc/fstab中注释掉swap分区
  2. 镜像拉取失败:国内环境建议配置阿里云镜像加速器
  3. 版本不匹配: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

文章评论