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

云原生实验室

共 2413字,需浏览 5分钟

 · 2020-11-28


更多奇技淫巧欢迎订阅博客: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

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

总共只有两个指标:

  • 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 什么的都行),就可以看到指标已经抓取到了:

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

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

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


你可能还喜欢

点击下方图片即可阅读

Kubernetes 最佳安全实践指南

云原生是一种信仰 ?



码关注公众号

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



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

❤️给个「在看」,是对我最大的支持❤️
浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报