0
点赞
收藏
分享

微信扫一扫

「走进k8s」Docker三剑客之Docker Swarm(九)

(一)Docker Swarm介绍

  • ①Swarm的架构

  • ②Swarm的服务和任务

  • ③如何部署
  1. 直接ssh到manager节点,执行docker命令。
  2. 通过远程访问的方式,通过Remote API调用manager上的docker命令,我们这张图画的就是第二种方式。

(二)集群演示

  • ①主机信息
系统类型 IP地址 节点角色 CPU Memory Hostname
Centos7 192.168.66.100 Manager 2 2G Nexus
Centos7 192.168.66.101 Nexus 2 2G Nexus
Centos7 192.168.66.102 Nexus 2 2G Nexus

  • ② manager节点初始化操作(192.168.66.100)
docker swarm init --advertise-addr 192.168.66.100

  • ③ 添加worker节点(192.168.66.101)
docker swarm join --token SWMTKN-1-3gfv7tpeznhwsl7v3y0n9f5g7547lgzo7fjpv0pm5s6uzvdlgg-b0mlie5vhp2ms1xg1tyd7zwc2 192.168.66.100:2377

  • ④ 添加worker节点(192.168.66.102)
docker swarm join --token SWMTKN-1-3gfv7tpeznhwsl7v3y0n9f5g7547lgzo7fjpv0pm5s6uzvdlgg-b0mlie5vhp2ms1xg1tyd7zwc2 192.168.66.100:2377

  • ⑤ manager查看节点
docker node ls

  • ⑥ 创建service服务
docker service create --replicas 3 -p 80:80 --name nginx nginx 
docker service ls

docker service ps



  • ⑥ 删除service服务
docker service rm nginx

(二)docker swarm 运行docker-compose文件

  • ①stack
  • ②测试docker-compose文件
mkdir labs
cd labs
vi docker-compose.yml

version: "3"
services:

  redis:
    image: redis:alpine
    ports:
      - "6379"
    networks:
      - frontend
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        constraints: [node.role == manager]

  vote:
    image: dockersamples/examplevotingapp_vote:before
    ports:
      - 5000:80
    networks:
      - frontend
    depends_on:
      - redis
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  result:
    image: dockersamples/examplevotingapp_result:before
    ports:
      - 5001:80
    networks:
      - backend
    depends_on:
      - db
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  worker:
    image: dockersamples/examplevotingapp_worker
    networks:
      - frontend
      - backend
    deploy:
      mode: replicated
      replicas: 1
      labels: [APP=VOTING]
      restart_policy:
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 120s
      placement:
        constraints: [node.role == manager]

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]

networks:
  frontend:
  backend:

volumes:
  db-data:

  • ③运行 docker-compose.yml
docker stack deploy example --compose-file=docker-compose.yml
docker stack ls
docker stack services example

  • 打开网页
    http:/192.168.66.100:5000/
    http://192.168.66.100:5001/
    http://192.168.66.100:8080/

  • 扩展vote
docker service scale example_vote=4

  • 删除stack
docker stack rm example

PS:这就是我们的服务编排,都是在三个节点,所谓的编排就是将多个节点变成一个节点来使用,接下来讲的k8s要把docker swarm功能要强大很多,当然也要复杂很多。docker的基本命令一样掌握好!后面说k8s才不会那么吃力,遇到问题了才知道如何解决。

举报

相关推荐

0 条评论