12

Docker 限速不用怕,因为我有 Grafana

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzU1MzY4NzQ1OA%3D%3D&%3Bmid=2247489202&%3Bidx=1&%3Bsn=95f385d93b962f5f84d084873a123318
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

mqaiuuZ.gif!mobile

更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io

前言

众所周知,Docker 官方仓库(Docker Hub)从今年 11 月份起就启用了限速功能,主要针对免费用户和匿名用户:

  • 匿名用户:每 6 小时,允许 Pull 100 次。

  • 免费用户:每 6 小时,允许 Pull 200

具体的限速方式是 基于对 DockerHub 上镜像 manifest 的请求数量 ;其次它区分的账户类型是根据拉取镜像的帐号来的,而不是根据镜像所有者进行限制;最后, 对于匿名用户/未登录用户,则是根据其单个 IP 进行限制的。

这对于咱白嫖党来说简直是晴天霹雳啊,虽然影响不大(应用数量巨多的大佬除外),但总感觉心里慌慌的,不知道何时会触发限制。得像个法子来监控一下呀,这样心里就有底了,也好忽悠领导啊。幸好国外有位小哥写了个 Prometheus Exporter,还打包成了 Helm Chart(好感动),咱直接装就得了。

1. 安装 Exporter

首先克隆官方仓库:

$ git clone https://github.com/viadee/docker-hub-rate-limit-exporter.git

$ cd docker-hub-rate-limit-exporter

如果你的 Kubernetes 集群使用的是需要通过 Docker Hub 认证的私有镜像,则需要将 Docker Hub 的用户名和密码填入 chart/values.yaml 中的 dockerhubUsernamedockerhubPassword 字段。建议 dockerhubPassword 字段填入 token,而不是密码。

如果你拉取的都是公共镜像,可以略过这一段。

下面直接通过 helm 来部署 exporter:

$ helm -n monitoring install docker-rate-limit-exporter chart -f chart/values.yaml

查看部署结果:

$ kubectl -n monitoring get pod -l app.kubernetes.io/name=docker-hub-rate-limit-exporter
NAME READY STATUS RESTARTS AGE
docker-rate-limit-exporter-docker-hub-rate-limit-exporter-zr6qg 1/1 Running 0 83m

现在就可以看到监控指标了:

InQNZvV.png!mobile

总共只有两个指标:

  • max_requests_total: 6 小时内允许 pull 的总次数。

  • remaining_requests_total : 6 小时内剩余的 pull 次数。如果这个值为 0 ,说明你当前受到了限制。

2. 加入监控

装好 Exporter 之后,就可以使用 Prometheus 来监控了。如果你使用 Prometheus Operator 来部署管理 Prometheus,可以直接创建 ServiceMonitor 来抓取指标:

servicemonitor.yaml

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: docker-hub-rate-limit-exporter
namespace: monitoring
labels:
app: docker-hub-rate-limit-exporter
spec:
selector:
matchLabels:
app.kubernetes.io/name: docker-hub-rate-limit-exporter
endpoints:
- port: http
path: "/"
interval: 10s
jobLabel: docker-hub-rate-limit-exporter
namespaceSelector:
matchNames:
- monitoring

使用上面的部署清单创建 ServiceMonitor:

$ kubectl apply -f servicemonitor.yaml

在浏览器中输入 Prometheus Server 的 URL 打开 Web 页面(这个就不用我教了吧?port-forward、ingress 什么的都行),就可以看到指标已经抓取到了:

n2YfyiZ.png!mobile

最后就是装逼环节,没有监控的 Dashboard 怎么向领导展示工作成果?难不成用游标卡尺向领导演示自己的 YAML 是如何缩进的?那肯定不行,还是整个 Dashboard 才能让领导放心,看,它来了:

MbmMvyJ.jpg!mobile

如果你也想向领导展示工作成果,可以扫描下方二维码关注公众号:

qAR3YbB.png!mobile

然后在公众号后台回复 dl 即可获取装逼 Dashboard!

jEJraeF.png!mobile

你可能还喜欢

点击下方图片即可阅读

BrU3MfR.jpg!mobile

Kubernetes 最佳安全实践指南

vam2EvY.gif!mobile

云原生是一种信仰 

3YRZRn2.png!mobile

码关注公众号

后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!

JV73iue.gif!mobile

jeeyYzV.gif!mobile

点击  "阅读原文"  获取 更好的阅读体验!

:heart: 给个 「在看」 ,是对我最大的支持:heart:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK