我目前将nginx pod readinessprobe配置为监视redis端口6379,并在redis服务(clusterip)后面配置redis pod。
所以我的想法是通过redis服务用dns而不是ip地址来监控redis端口。
当我使用 readinessProbe.host: redis-service.default.svc.cluster.local
nginx pod没有运行。当我描述nginx吊舱时 $ kubectl describe pods nginx
,我在事件部分发现以下错误: Readiness probe failed: dial tcp: lookup redis-service.default.svc.cluster.local: no such host
它只有在我使用clusterip而不是dns时才有效。
请帮我弄清楚如何使用dns而不是clusterip。
我的pod文件:
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: nginx
name: nginx
spec:
containers:
- image: nginx
name: nginx
livenessProbe:
httpGet:
path: /
port: 80
readinessProbe:
tcpSocket:
host: redis-service.default.svc.cluster.local
port: 6379
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
谢谢。
1条答案
按热度按时间zd287kbt1#
我知道怎么做了。
不用tcpsocket,只需使用exec。在容器中执行tcpcheck脚本以检查service:port availability.
使用init容器与主容器共享脚本。
谢谢。