readinessprobe对主机使用dns而不是ip地址

xmq68pz9  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(378)

我目前将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

谢谢。

zd287kbt

zd287kbt1#

我知道怎么做了。
不用tcpsocket,只需使用exec。在容器中执行tcpcheck脚本以检查service:port availability.
使用init容器与主容器共享脚本。
谢谢。

相关问题