Nginx readinessProbe为主机使用DNS而不是IP地址

Nginx readinessProbe为主机使用DNS而不是IP地址,nginx,kubernetes,redis,Nginx,Kubernetes,Redis,我目前将我的Nginx PodreadinessProbe配置为监视Redis端口6379,并在Redis服务(ClusterIP)后面配置我的Redis Pod 所以我的想法是通过Redis服务使用DNS而不是IP地址来监控Redis端口 当我使用readinessProbe.host:redis service.default.svc.cluster.local时,Nginx pod没有运行。当我描述Nginx pod$kubectl descripe pods Nginx时,我在事件部分发

我目前将我的Nginx PodreadinessProbe配置为监视Redis端口6379,并在Redis服务(ClusterIP)后面配置我的Redis Pod

所以我的想法是通过Redis服务使用DNS而不是IP地址来监控Redis端口

当我使用
readinessProbe.host:redis service.default.svc.cluster.local
时,Nginx pod没有运行。当我描述Nginx pod
$kubectl descripe pods Nginx
时,我在事件部分发现以下错误:

准备就绪探测失败:拨号tcp:lookup redis-service.default.svc.cluster.local:没有这样的主机

它只有在我使用ClusterIP而不是DNS时才有效

请帮我弄清楚如何使用DNS而不是ClusterIP

我的Pod文件:

apiVersion:v1 种类:豆荚 元数据: creationTimestamp:空 标签: 运行:nginx 姓名:nginx 规格: 容器: -图片:nginx 姓名:nginx livenessProbe: httpGet: 路径:/ 港口:80 readinessProbe: tcpSocket: 主机:redis-service.default.svc.cluster.local 港口:6379 资源:{} DNS政策:集群优先 restartPolicy:始终
谢谢。

我知道怎么做了

不要使用tcpSocket,只需使用exec即可。 在容器内执行tcpCheck脚本以检查服务:端口可用性

使用init容器与主容器共享脚本。


谢谢。

我认为探索像这样的其他服务通常没有意义。假设我们有一个非常慢的Nginx,启动需要一分钟;因为Redis备份存储已启动,您想声明它“准备就绪”吗?@DavidMaze是的,我需要先确保Redis正在运行,并且能够接受数据包,然后再让用户访问Nginx。我可以知道你推荐的方法是什么吗?我同意@DavidMaze的观点,即直接探测redis似乎有点奇怪,特别是因为这实际上并没有测试nginx服务。您是否可以改为通过nginx探测redis?e、 g.如果nginx应该将
/redis端点上的请求路由到
redis服务
,那么只需将nginx就绪探测设置为获取
/redis端点
。这样,您就可以同时测试这两个组件,而不必担心redis的DNS/IP。