docker swarm集群搭建,对比k8s
文章目录
- Docker Swarm和Kubernetes 核心功能对比
- 环境准备
- 创建Swarm 主节点
- 将节点添加到 Swarm
Docker Swarm和Kubernetes 核心功能对比
| 功能 | Docker Swarm | Kubernetes |
|---|---|---|
| 服务部署 | Manager直接分配任务给Worker节点 | 通过API Server、Scheduler等组件协调 |
| 高可用性 | 自动重新调度容器(节点故障时) | 自动故障转移、自愈能力更强 |
| 滚动更新 | 支持,逐步更新容器实例 | 支持,更精细的控制(如金丝雀发布) |
| 资源管理 | 基于节点的资源分配 | 精细的CPU/内存资源分配与限制 |
| 存储管理 | 简单的本地存储卷 | PV/PVC等高级存储编排 |
| 安全机制 | TLS加密、用户认证 | 更全面的安全策略和RBAC |
环境准备
| IP | 名称 |
|---|---|
| 10.10.10.11 | 主节点 manager1 |
| 10.10.10.3 | 工作节点1 worker1 |
| 10.10.10.4 | 工作节点2 worker2 |
# 修改三台机器名称
hostnamectl set-hostname manage1
hostnamectl set-hostname worker1
hostnamectl set-hostname worker2
# 所有节点开放Swarm必需端口
firewall-cmd --permanent --add-port={2377/tcp,7946/tcp,7946/udp,4789/udp}
firewall-cmd --reload
三台服务器需安装docker
yum -y update# 安装基础依赖
yum install -y yum-utils device-mapper-persistent-data lvm2# 添加docker源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo创建yum缓存
yum makecache --timer安装docker
yum -y install docker-ce# 启动docker并设置开机自启
systemctl enable --now docker
创建Swarm 主节点
远程到10.10.10.11 manager1 ,创建一个新的swarm
# 在 manager1 机器上创建了一个 Swarm
docker swarm init --advertise-addr 10.10.10.11
--advertise-addr 标志将管理器节点配置为将其地址发布为 10.10.10.11。Swarm 中的其他节点必须能够通过此 IP 地址访问管理器。

输出包含将新节点加入 Swarm 的命令。节点将根据 --token 标志的值加入为管理器或工作节点
运行 docker info 以查看 Swarm 的当前状态

运行 docker node ls 命令以查看有关节点的信息

将节点添加到 Swarm
运行创建 Swarm教程步骤中docker swarm init输出生成的命令,以创建加入现有 Swarm 的工作节点。
如果没有记住命令,可以在manage1管理节点输入以下命令来检索工作节点的加入命令。
docker swarm join-token worker

将其他两个节点也提升为Manager节点
# 在Manager节点上执行
docker node promote <worker-node-id># 验证节点角色
docker node ls

[root@manage1 portainer]# cat docker-compose.yml
services:portainer:#container_name: portainer#network_mode: bridgeimage: 6053537/portainer-ce:2.33.3# image: 6053537/portainer-ce #汉化版。官方版为portainer/portainer-ce# image: hub-mirror.c.163.com/6053537/portainer-ce #推荐国内服务器或nas用,需要请用#注释上一行ports:- 9000:9000
# - 8000:8000
# - 9443:9443volumes:- ./portainer_data:/data- /var/run/docker.sock:/var/run/docker.sockrestart: unless-stopped[root@manage1 portainer]# docker stack deploy -c docker-compose.yml portainer
[root@manage1 portainer]# docker service ls
[root@manage1 portainer]# docker service logs portainer_portainer
