当前设置
你好。我正在使用随S3存储一起部署的Docker Registry Helm chart 。现在,我想更新(更改)实时/就绪探针的工作方式。原因是使用一天后,我已经耗尽了AWS上LIST请求的免费每月配额。该配额为2000个请求/月。现在,注册表 Pane 上的探针如下所示:
Liveness: http-get http://:5000/ delay=0s timeout=1s period=10s #success=1 #failure=3
Readiness: http-get http://:5000/ delay=0s timeout=1s period=10s #success=1 #failure=3
这些请求显然是
GET
。但是,按照this的答案,这些请求被AWS标记为LIST
。这些是我在 Helm 图Docker Registry安装中使用的自定义值( chart_values.yaml ):
storage: s3
secrets:
htpasswd: "..."
s3:
accessKey: "..."
secretKey: "..."
s3:
region: "..."
secure: true
bucket: "..."
推/拉图像按预期工作。
问题(请参阅最新的修改后的问题)
我知道我可以编辑部署配置以更改探针的
periodSeconds
,例如600s
。但我认为这不是最佳解决方案。我知道liveness commands存在,但是我不确定默认注册表docker镜像是否可以实现。我最后想到的是,如果注册表docker镜像启用了prometheus度量标准,则可以将探针更改为
:5001/metrics
路径。但是我不太确定该怎么做。编辑:
为了启用Prometheus指标,我删除了以前安装的docker Registry Helm 。然后通过
helm pull stable/docker-registry --untar
下载stable docker reigstry helm chart。然后,我编辑了 templates / deployment.yaml 文件:
spec:
containers:
ports:
- containerPort: 5000
- containerPort: 5001 # Added this line
livenessProbe:
initialDelaySeconds: 1 # Added
path: /metrics # Edited
port: 5001 # Edited
readinessProbe:
initialDelaySeconds: 10 # Added
path: /metrics # Edited
port: 5001 # Edited
env:
# Added these env variables
- name: REGISTRY_HTTP_DEBUG_ADDR
value: "localhost:5001"
- name: REGISTRY_HTTP_DEBUG_PROMETHEUS_ENABLED
value: "true"
- name: REGISTRY_HTTP_DEBUG_PROMETHEUS_PATH
value: /metrics
以及 templates / service.yaml 文件:
ports:
- port: {{ .Values.service.port }}
protocol: TCP
name: {{ .Values.service.name }}
targetPort: 5000
# Added these lines below
- port: 5001
protocol: TCP
name: {{ .Values.service.name }}-prometheus
targetPort: 5001
棉绒并安装:
helm install registry ./docker-registry-chart/ -f chart_values.yaml -n docker-registry
但是,注册表容器永远无法使用此配置就绪(
kubectl get
在容器上显示0/1)。这是由于未暴露5001 containerPort而导致就绪探针失败。因此,就绪探针失败,无法到达度量服务器。我可以确认Docker容器中的指标服务器已正确启动。以下是注册表荚日志,它们显示调试(度量)服务器已启动:
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_PORT"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_PORT_5000_TCP"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_PORT_5000_TCP_ADDR"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_PORT_5000_TCP_PORT"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_PORT_5000_TCP_PROTO"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_PORT_5001_TCP"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_PORT_5001_TCP_ADDR"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_PORT_5001_TCP_PORT"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_PORT_5001_TCP_PROTO"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_SERVICE_HOST"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_SERVICE_PORT"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_SERVICE_PORT_REGISTRY"
time="2020-04-10T14:36:26Z" level=warning msg="Ignoring unrecognized environment variable REGISTRY_DOCKER_REGISTRY_SERVICE_PORT_REGISTRY_PROMETHEUS"
time="2020-04-10T14:36:26.172115809Z" level=info msg="debug server listening localhost:5001"
time="2020-04-10T14:36:26.188154917Z" level=info msg="redis not configured" go.version=go1.11.2 instance.id=fc945824-3600-4343-8a18-75a20b07f695 service=registry version=v2.7.1
time="2020-04-10T14:36:26.194453749Z" level=info msg="Starting upload purge in 29m0s" go.version=go1.11.2 instance.id=fc945824-3600-4343-8a18-75a20b07f695 service=registry version=v2.7.1
time="2020-04-10T14:36:26.211140816Z" level=info msg="using inmemory blob descriptor cache" go.version=go1.11.2 instance.id=fc945824-3600-4343-8a18-75a20b07f695 service=registry version=v2.7.1
time="2020-04-10T14:36:26.211497166Z" level=info msg="providing prometheus metrics on /metrics"
time="2020-04-10T14:36:26.211894294Z" level=info msg="listening on [::]:5000" go.version=go1.11.2 instance.id=fc945824-3600-4343-8a18-75a20b07f695 service=registry version=v2.7.1
我什至可以执行docker容器并 curl
localhost:5001/metrics
,从而得到200个带有适当的prometheus数据。但是我仍然不确定如何在容器上公开5001端口。我相信这将使我能够将指标与@mdaniel中的his answer提及之类的探针一起使用。
编辑2 :
kubectl port-forward <registry_pod> 5001
Portforwarding注册表容器有效,我可以
curl localhost:5001/metrics
来获取普罗米修斯指标数据。 curl
从集群执行。我想知道 templates / service.yaml 文件是否有问题。
编辑3 :我知道问题出在哪里。端口
5001
上无法访问的服务是由于将REGISTRY_HTTP_DEBUG_ADDR
设置为localhost:5001
导致的。 值应为:5001
。最后,将其转换为您的 template / deployment.yaml 应该如下所示:
spec:
containers:
ports:
- containerPort: 5000
- containerPort: 5001 # Added this line
livenessProbe:
initialDelaySeconds: 1 # Added
path: /metrics # Edited
port: 5001 # Edited
readinessProbe:
initialDelaySeconds: 10 # Added
path: /metrics # Edited
port: 5001 # Edited
env:
# Added these env variables
- name: REGISTRY_HTTP_DEBUG_ADDR
value: ":5001" # Make sure the addr field is left empty!
- name: REGISTRY_HTTP_DEBUG_PROMETHEUS_ENABLED
value: "true"
- name: REGISTRY_HTTP_DEBUG_PROMETHEUS_PATH
value: /metrics
潜在地,您也可以通过 chart_values.yaml 文件以及
configData
部分(configData.http.debug.addr
等)来提供环境变量。无论哪种方式,我都决定将“答案”发布为编辑内容,而不是常规的SO答案。 原始问题仍未得到解答。
重述原始问题:
最佳答案
您可以将 list 文件中的“ liveness ”和“就绪” URL更改为度量标准URL。
关于amazon-s3 - Kubernetes:关于S3存储托管Docker Registry的活跃性/就绪性探针的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61103591/