如何为 livenessProbe/readinessProbe 定义 Pod 健康检查端口
How to define Pod health check port for livenessProbe/readinessProbe
如何定义不同的 Pod 端口,一个用于应用程序,另一个用于健康检查 (readinessProbe)?
下面显示的端口规范是否是使 readinessProbe 检查健康检查端口的正确方法 TCP/9090?我的意思是,readinessProbe 是否会到达端口 9090(当然假设它由 运行 容器打开)?或者是否需要指定任何其他端口(nodePort、targetPort、端口等)?
kind: Deployment
spec:
template:
spec:
containers:
- name: myapp
image: <image>
ports:
- name: myapp-port
containerPort: 8080
protocol: TCP
- name: healthcheck-port
containerPort: 9090
protocol: TCP
readinessProbe:
httpGet:
port: healthcheck-port
scheme: HTTP
initialDelaySeconds: 60
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 2
failureThreshold: 2
是的,您的规范片段几乎正确。您无需指定任何其他内容即可使就绪探测工作。
端口名称不能超过 15 个字符,因此名称 healthcheck-port
无效。您可能希望将名称更改为更小的名称,例如 healthcheck
。
您可以为 livenessProbe
和 readinessProbe
指定任何端口和路径(假设它是 http),但是,当然,您需要在那里提供一些服务。
它不应该是一个服务端口,所以 NodePort
不是一个选项,因为它 kubelet
负责容器的健康,并且它可以直接访问容器。
您当前的配置几乎与@shashank-v 提到的一样正确,除了端口名称。
除了名称之外,我想在这里指出的是使用与最佳实践相同的端口,即 TCP/8080 但有一个 healthz
路径,您的应用程序在其中响应 ok
或 running
。然后在你的 httpget:
readinessProbe:
httpGet:
port: 8080
path: /healthz
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
很好的参考:
如何定义不同的 Pod 端口,一个用于应用程序,另一个用于健康检查 (readinessProbe)?
下面显示的端口规范是否是使 readinessProbe 检查健康检查端口的正确方法 TCP/9090?我的意思是,readinessProbe 是否会到达端口 9090(当然假设它由 运行 容器打开)?或者是否需要指定任何其他端口(nodePort、targetPort、端口等)?
kind: Deployment
spec:
template:
spec:
containers:
- name: myapp
image: <image>
ports:
- name: myapp-port
containerPort: 8080
protocol: TCP
- name: healthcheck-port
containerPort: 9090
protocol: TCP
readinessProbe:
httpGet:
port: healthcheck-port
scheme: HTTP
initialDelaySeconds: 60
timeoutSeconds: 5
periodSeconds: 10
successThreshold: 2
failureThreshold: 2
是的,您的规范片段几乎正确。您无需指定任何其他内容即可使就绪探测工作。
端口名称不能超过 15 个字符,因此名称 healthcheck-port
无效。您可能希望将名称更改为更小的名称,例如 healthcheck
。
您可以为 livenessProbe
和 readinessProbe
指定任何端口和路径(假设它是 http),但是,当然,您需要在那里提供一些服务。
它不应该是一个服务端口,所以 NodePort
不是一个选项,因为它 kubelet
负责容器的健康,并且它可以直接访问容器。
您当前的配置几乎与@shashank-v 提到的一样正确,除了端口名称。
除了名称之外,我想在这里指出的是使用与最佳实践相同的端口,即 TCP/8080 但有一个 healthz
路径,您的应用程序在其中响应 ok
或 running
。然后在你的 httpget:
readinessProbe:
httpGet:
port: 8080
path: /healthz
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
很好的参考: