Registrator 自动注册容器服务到 SkyDNS (备忘)

Registrator

Registrator 通过检查容器在线或停止,来自动为任何 Docker 容器注册和注销服务

Github 地址: https://github.com/gliderlabs/registrator

熟悉下 Registrator 有助于理解 Kubernets 的服务发现机制

SkyDNS

SkyDNS 是一个域名解析服务器。使用 Etcd 作为后端存储

安装、部署可以参考本人博客: 《SkyDNS 编译、部署、使用(备忘)》

本文中启动 SkyDNS 使用的命令为:

sudo nohup ./skydns -machines=http://127.0.0.1:2379 -etcd3=false -addr=0.0.0.0:53 -nameservers=8.8.8.8:53,8.8.4.4:53 -domain="project_x." > ./skydns.log 2>&1 &

安装 Registrator

运行类似以下命令:

#!/bin/bash
docker rm -f registrator
docker run -d --restart=unless-stopped \
    --name=registrator \
    --net=host \
    --volume=/var/run/docker.sock:/tmp/docker.sock \
    gliderlabs/registrator:latest \
    -ip $(hostname) \
    skydns2://vm-ubuntu20:2379/dev.project_x

解释下参数:

参数说明
-ip可以填本机IP地址之类的,最佳实践就填写本机主机名,如例子中通过hostname命令获取
skydns2://vm-ubuntu20:2379/dev.project_xvm-ubuntu20:2379 为 Etcd 地址
dev.project_x 为域名

自动注册服务

运行类似以下命令,来观察是否正常自动注册了 Redis 服务:

#!/bin/bash

docker rm -f redis1
docker rm -f redis2
docker run -d --restart=unless-stopped --name redis1 -e SERVICE_ID=redis1 -p 6379:6379 redis
docker run -d --restart=unless-stopped --name redis2 -e SERVICE_ID=redis2 -p 6380:6379 redis

通过 EtcdKeeper 来查看下:

在这里插入图片描述
用 dig 命令,做下域名解析,看是否能得到 Redis 这个服务的 ip 列表:

fananchong@vm-ubuntu20:~/registrator$ dig @localhost redis.dev.project_x. SRV

; <<>> DiG 9.16.1-Ubuntu <<>> @localhost redis.dev.project_x. SRV
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59121
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;redis.dev.project_x.           IN      SRV

;; ANSWER SECTION:
redis.dev.project_x.    3600    IN      SRV     10 50 6380 vm-ubuntu20.
redis.dev.project_x.    3600    IN      SRV     10 50 6379 vm-ubuntu20.

;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Mar 27 03:55:48 UTC 2021
;; MSG SIZE  rcvd: 99

自动解除服务

停掉 Redis 一个服务实例,来观察下,是否能正确查询 ip 列表:

fananchong@vm-ubuntu20:~/registrator$ ./test2.sh 
+ date
Sat 27 Mar 2021 04:01:24 AM UTC
+ docker stop redis1
redis1
+ date
Sat 27 Mar 2021 04:01:26 AM UTC
+ dig @localhost redis.dev.project_x. SRV

; <<>> DiG 9.16.1-Ubuntu <<>> @localhost redis.dev.project_x. SRV
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53465
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;redis.dev.project_x.           IN      SRV

;; ANSWER SECTION:
redis.dev.project_x.    3600    IN      SRV     10 100 6380 vm-ubuntu20.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Mar 27 04:01:26 UTC 2021
;; MSG SIZE  rcvd: 68

+ date
Sat 27 Mar 2021 04:01:26 AM UTC

其他

使用下 Registrator ,发现有以下几点可以改进的地方:

  • 不支持 Etcd clietn v3 接口
  • 是按主机为单位注册服务,而不是按集群版本为单位注册服务
  • 不支持自动更新 Docker 容器的负载值

欢迎关注本博客,后续会如何扩展 Registrator ,来改进以上问题!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fananchong2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值