搭建Docker集群主要有以下几种主流方案,我将分别介绍每种方案的搭建步骤:
Docker Swarm是Docker原生的集群管理工具,简单易用。
初始化Swarm集群(管理节点)
docker swarm init --advertise-addr <管理节点IP>
命令执行后会输出加入工作节点的命令
加入工作节点 在工作节点上运行上一步输出的命令,例如:
docker swarm join --token SWMTKN-1-xxxxx <管理节点IP>:2377
验证集群状态
docker node ls
部署服务
docker service create --name web --replicas 3 -p 80:80 nginx
Kubernetes是更强大的容器编排系统,适合复杂场景。
所有节点准备工作
# 关闭swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 安装Docker
apt-get update && apt-get install -y docker.io
# 安装kubeadm, kubelet和kubectl
apt-get update && apt-get install -y apt-transport-https curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubelet kubeadm kubectl
apt-mark hold kubelet kubeadm kubectl
主节点初始化
kubeadm init --pod-network-cidr=10.244.0.0/16
初始化完成后按照提示设置kubectl配置
安装网络插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
加入工作节点 在主节点初始化完成后会输出加入命令,在工作节点执行该命令
对于小型集群,可以结合Docker Compose和Swarm使用
初始化Swarm集群
docker swarm init
使用Compose文件部署 ```docker-compose.yml version: '3.8'
services: web: image: nginx deploy: replicas: 3 resources: limits: cpus: "0.1" memory: 50M ports: - "80:80" ```
部署服务
docker stack deploy -c docker-compose.yml myapp
Portainer - Docker图形化管理工具
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Rancher - 多集群管理平台
根据您的具体需求和技术栈选择合适的集群方案。对于初学者或小型项目,Docker Swarm是更简单的选择;对于大型生产环境,Kubernetes提供了更全面的功能。