readinessProbe使用DNS代替主机的IP地址

问题描述 投票:1回答:1

我当前将我的Nginx Pod配置为readinessProbe以监视Redis端口6379,并且i将我的redis-pod配置为redis-service(ClusterIP)的后面

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

[当我使用readinessProbe.host: redis-service.default.svc.cluster.local时,Nginx-pod没有运行然后我描述Nginx-pod $ kubectl describe pods nginx

我在“事件”部分中发现以下错误:Readiness probe failed: dial tcp: lookup redis-service.default.svc.cluster.local: no such host

仅当我在DNS上使用ClusterIP时才起作用。

请帮助如何在ClusterIP上使用DNS。

我的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

谢谢。

nginx kubernetes redis
1个回答
0
投票

我想出了办法。

不是使用tcpSocket,而是使用exec。在容器内执行tcpCheck脚本以检查service:port可用性。

© www.soinside.com 2019 - 2024. All rights reserved.