概述
当初是向想使用 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 选项卡里面有
部署自己需要的容器
本篇博客是更新博客, 所以还没有更新完成, 之后慢慢更新
来源: http://www.jianshu.com/p/4e564d36a87f