从零在树梅派上搭建docker swarm集群

《从零在树梅派上搭建docker swarm集群》

概述

当初是向想使用k8s来做,但是这个东西在树梅派上貌似不是特别的成熟,还有因为i就只有两台树梅派,所以没必要这么复杂,反正能玩就好

操作系统的选择

当初是向选择rancheros作为树梅派的操作系统,但是rancheros貌似在树梅派上不是特别的成熟,而且开机是相当的慢,所以我还是使用了最新的raspbian lite,烧写操作系统我就不说了,用dd命令就好

系统初始化操作

首先我使用的是zsh+oh-my-zsh作为我的shell的,之后安装git等必要工具

sudo apt install git htop vim zsh

修改root密码

passwd root

让root可以ssh登陆树梅派

vim /etc/ssh/ssh_config

PermitRootLogin yes

systemctl restart ssh

之后使用root登陆树梅派删除pi这个用户

deluser pi

修改on-my-zsh的主题

vim .zshrc

我使用的是

ZSH_THEME="gnzh"

因为可以看见主机名

修改主机名

hostnamectl set-hostname pi-master

这个是为了让你方便在ssh的时候知道自己在什么机器上

当然你可以让树梅派使用无线连接,编辑下面这个文件

vim /etc/wpa_supplicant/wpa_supplicant.conf

加入

network={
    ssid="bboysoul"
    psk="mei123456"
}

psk是你的无线密码,ssid是无线的名字

work节点的话操作也都是一样的

安装docker

下载安装脚本

wget get.docker.com

mv index.html index.sh

执行

chmod +x index.sh

./index.sh

配置阿里云镜像加速器

这个上dev.aliyun.com自己配置

节点初始化

在master节点执行

docker swarm init

之后会生成一条命令,类似下面这样

docker swarm join --token SWMTKN-1-0shhd0b7uwajhgymxgpp1nv5u17jvcup9vvmhnqkg77ds57e5h-7l1fsodxdlu9wxpwxfgckxr23 192.168.0.113:2377

你把这条命令在work节点上执行,work节点就可以自动加入集群中了,之后记得把这条命令保存起来方便以后其他节点的加入

下载一个nginx镜像做实验

首先因为是跨主机的所以我们要创建一个overlay网络来跑我们的nginx容器

docker network create --driver overlay --subnet 192.168.11.1/24 nginxnet

接着创建nginx service

docker service create --name nginx --replicas=3 --network nginxnet --publish 80:80 nginx

我这里创建的是3个容器副本把80端口暴露出来

之后我们浏览器访问slave机器的ip,并且查看日志

docker service logs nginx

如果看到有slave的那么我们就成功了

我们可以用下面这个命令来查看访问了master中的容器多少次

docker service logs nginx |grep master |wc

增加监控

监控的话我用的是visualizer,输入下面创建容器就好

docker run --name visualizer-arm -it -d -p 8081:8080 -v /var/run/docker.sock:/var/run/docker.sock alexellis2/visualizer-arm

安装portainer

上面这个只是简单的集群监控面板,没有任何其他功能的,只能看看,之后我们要安装portainer来管理整个集群

为什么要使用portainer,而不是shipyard,或者是dockerui,最主要的原因是因为后两个项目已经不维护了,使用下面命令创建portainer service

mkdir -p /root/docker/portainer/data

╭─root@pi-master ~  
╰─➤  docker service create \     
--name portainer \
--publish 9000:9000 \
--replicas=1 \
--constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
--mount type=bind,src=/root/docker/portainer/data,dst=/data \
portainer/portainer \
-H unix:///var/run/docker.sock

之后访问你的manager ip:9000

第一次访问会让你建立一个账号用作管理员,之后你就可以愉快的玩耍了,其实portainer是内置了virsualizer的在swarm选项卡里面有

部署自己需要的容器

本篇博客是更新博客,所以还没有更新完成,之后慢慢更新

欢迎关注Bboysoul的博客www.bboysoul.com
Have Fun

    原文作者:bboysoul
    原文地址: https://www.jianshu.com/p/4e564d36a87f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞