当前位置:   article > 正文

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

dockerhub 为什么限制速率


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

前言

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

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

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

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

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

1. 安装 Exporter

首先克隆官方仓库:

  1. $ git clone https://github.com/viadee/docker-hub-rate-limit-exporter.git
  2. $ 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

查看部署结果:

  1. $ kubectl -n monitoring get pod -l app.kubernetes.io/name=docker-hub-rate-limit-exporter
  2. NAME                                                              READY   STATUS    RESTARTS   AGE
  3. 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

  1. apiVersion: monitoring.coreos.com/v1
  2. kind: ServiceMonitor
  3. metadata:
  4.   name: docker-hub-rate-limit-exporter
  5.   namespace: monitoring
  6.   labels:
  7.     app: docker-hub-rate-limit-exporter
  8. spec:
  9.   selector:
  10.     matchLabels:
  11.       app.kubernetes.io/name: docker-hub-rate-limit-exporter
  12.   endpoints:
  13.     - port: http
  14.       path: "/"
  15.       interval: 10s
  16.   jobLabel: docker-hub-rate-limit-exporter
  17.   namespaceSelector: 
  18.     matchNames:
  19.       - monitoring

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

$ kubectl apply -f servicemonitor.yaml

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

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

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

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


你可能还喜欢

点击下方图片即可阅读

Kubernetes 最佳安全实践指南

云原生是一种信仰 ????

码关注公众号

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

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

❤️给个「在看」,是对我最大的支持❤️
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/501243
推荐阅读
相关标签
  

闽ICP备14008679号