温馨提示×

centos docker如何做集群

小樊
47
2026-09-17 23:02:16
栏目: 智能运维

在 CentOS 上使用 Docker 做集群,常见方案有 Docker Swarm 和 Kubernetes。下面我分别说明,并给你可操作的步骤(以 CentOS 7/8 为例)。


一、方案选择建议

方案 适合场景 难度
Docker Swarm 简单集群、快速部署 ⭐⭐
Kubernetes 生产级、复杂应用 ⭐⭐⭐⭐

二、Docker Swarm(推荐入门)

1. 准备工作

  • 多台 CentOS 服务器(≥2 台)
  • 主机名可解析(推荐配置 /etc/hosts 或 DNS)
  • 关闭防火墙或放行端口
# 放行端口(Swarm 必需)
firewall-cmd --add-port=2377/tcp --permanent
firewall-cmd --add-port=7946/tcp --permanent
firewall-cmd --add-port=7946/udp --permanent
firewall-cmd --add-port=4789/udp --permanent
firewall-cmd --reload

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(管理节点)

docker swarm init --advertise-addr <管理节点IP>

输出类似:

docker swarm join --token SWMTKN-1-xxx <管理节点IP>:2377

4. 工作节点加入集群

在 工作节点 执行:

docker swarm join --token <token> <管理节点IP>:2377

5. 查看集群状态

docker node ls

6. 部署服务示例

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

三、Kubernetes(生产级)

方案

  • kubeadm(官方推荐)
  • 或使用 k3s(轻量级)

1. 所有节点准备

# 关闭 swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

# 设置主机名
hostnamectl set-hostname master
hostnamectl set-hostname node1

# 配置 hosts
cat >> /etc/hosts <<EOF
192.168.1.10 master
192.168.1.11 node1
EOF

2. 安装容器运行时(containerd)

yum install -y containerd
systemctl enable --now containerd

3. 安装 kubeadm

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
EOF

yum install -y kubelet kubeadm kubectl
systemctl enable --now kubelet

4. 初始化 Master

kubeadm init --pod-network-cidr=10.244.0.0/16

5. Node 加入

kubeadm join <master-ip>:6443 --token xxx --discovery-token-ca-cert-hash sha256:xxx

6. 安装网络插件(Flannel)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

四、生产建议

  • 使用 静态 IP
  • 使用 私有镜像仓库
  • 数据持久化用 NFS / Ceph
  • 日志集中(ELK / Loki)

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

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

我可以直接给你 一套完整部署脚本。

0 踩