Nginx readinessProbe为主机使用DNS而不是IP地址
我目前将我的Nginx PodreadinessProbe配置为监视Redis端口6379,并在Redis服务(ClusterIP)后面配置我的Redis Pod 所以我的想法是通过Redis服务使用DNS而不是IP地址来监控Redis端口 当我使用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时,我在事件部分发
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。