温馨提示×

centos docker怎么集群部署

小樊
47
2026-09-29 23:02:11
栏目: 智能运维

在 CentOS 上使用 Docker 做集群部署,最常见、官方推荐的方式是 Docker Swarm(简单、原生)或 Kubernetes(生产级、复杂)。下面我分别说明,并给你可操作的步骤。


一、Docker Swarm(推荐新手 / 中小集群)

1. 环境准备(所有节点)

CentOS 7/8,建议:

  • 2 台及以上机器(1 Manager + 若干 Worker)
  • 关闭防火墙或放行端口
# 关闭防火墙(测试环境)
systemctl stop firewalld
systemctl disable firewalld

# 或放行端口
# TCP 2377(集群管理)
# TCP/UDP 7946(节点通信)
# UDP 4789(overlay 网络)

2. 安装 Docker(所有节点)

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable --now docker

3. 初始化 Swarm(Manager 节点)

docker swarm init --advertise-addr <manager_ip>

输出类似:

docker swarm join --token SWMTKN-1-xxx <manager_ip>:2377

4. 加入 Worker 节点

在 worker 节点执行:

docker swarm join --token SWMTKN-1-xxx <manager_ip>:2377

5. 查看集群状态

docker node ls

6. 部署服务(示例)

docker service create --name nginx --replicas 3 -p 80:80 nginx

7. 常用命令

docker service ls
docker service ps nginx
docker service scale nginx=5

✅ 适合:

  • 快速集群
  • 内部系统
  • 不太复杂的微服务

二、Kubernetes(生产级集群)

方案选择

  • kubeadm(官方)
  • k3s(轻量,推荐 CentOS 测试/边缘)

使用 k3s(最简单)

Master 节点

curl -sfL https://get.k3s.io | sh -

Worker 节点

curl -sfL https://get.k3s.io | K3S_URL=https://<master_ip>:6443 \
K3S_TOKEN=<token> sh -

token 在 master 的 /var/lib/rancher/k3s/server/node-token

验证

kubectl get nodes

使用 kubeadm(标准方式)

  1. 所有节点安装:
yum install -y docker kubelet kubeadm kubectl
systemctl enable --now docker kubelet
  1. Master 初始化
kubeadm init --pod-network-cidr=10.244.0.0/16
  1. 配置 kubectl
mkdir -p $HOME/.kube
cp /etc/kubernetes/admin.conf $HOME/.kube/config
  1. 安装网络插件(Flannel)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
  1. Worker 加入
kubeadm join <master_ip>:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx

三、如何选择?

场景 推荐
快速部署、简单 Docker Swarm
生产、复杂微服务 Kubernetes
边缘 / 低资源 k3s
学习用途 Swarm → K8s

四、常见坑(CentOS)

  • CentOS 8 已停止维护 → 建议 CentOS 7 或 Rocky/Alma
  • SELinux 可能导致问题:
setenforce 0
  • 时间不同步会导致集群异常:
yum install -y ntp
systemctl enable --now ntpd

如果你愿意,可以告诉我:

  • 几台机器?
  • 是否生产环境?
  • 用 Swarm 还是 K8s?

我可以直接帮你写 完整部署脚本。

0 踩