Kubernetes:获取名称解析错误
我正在将php和redis部署到一个本地minikube集群,但在名称解析方面出现了以下错误Kubernetes:获取名称解析错误,kubernetes,minikube,Kubernetes,Minikube,我正在将php和redis部署到一个本地minikube集群,但在名称解析方面出现了以下错误 警告:Redis::connect():php\u network\u getaddress:getaddrinfo失败:第4行/app/Redis.php中的名称解析暂时失败 警告:Redis::connect():connect()失败:php\u network\u getaddresses:getaddrinfo失败:第4行/app/Redis.php中的名称解析暂时失败 致命错误:未捕获的Re
警告:Redis::connect():php\u network\u getaddress:getaddrinfo失败:第4行/app/Redis.php中的名称解析暂时失败
警告:Redis::connect():connect()失败:php\u network\u getaddresses:getaddrinfo失败:第4行/app/Redis.php中的名称解析暂时失败
致命错误:未捕获的RedisException:Redis服务器在/app/Redis.php:5堆栈跟踪中消失:#0/app/Redis.php(5):Redis->ping()#1{main}抛出到第5行的/app/Redis.php中
我正在使用以下配置文件:
apache-php.yaml
apiVersion:apps/v1
种类:部署
元数据:
名称:Web服务器
标签:
应用程序:apache
规格:
副本:1份
选择器:
火柴标签:
应用程序:apache
模板:
元数据:
标签:
应用程序:apache
规格:
容器:
-名称:php apache
图片:webdevops/php apache
imagePullPolicy:如果不存在
端口:
-集装箱港口:80
体积数量:
-名称:应用程序代码
mountPath:/app
卷数:
-名称:应用程序代码
主机路径:
路径:/minikubeMnt/src
---
版本:v1
种类:服务
元数据:
名称:web服务
标签:
应用程序:apache
规格:
类型:节点端口
端口:
-港口:80
协议:TCP
选择器:
应用程序:apache
亚马尔酒店
apiVersion:apps/v1
种类:部署
元数据:
姓名:redis
标签:
应用程序:redis
规格:
副本:1份
选择器:
火柴标签:
应用程序:redis
模板:
元数据:
标签:
应用程序:redis
规格:
容器:
-姓名:redis
图片:redis:5.0.4
imagePullPolicy:如果不存在
端口:
-集装箱港口:6379
---
版本:v1
种类:服务
元数据:
名称:redis服务
规格:
类型:节点端口
端口:
-港口:6379
目标港:6379
选择器:
应用程序:redis
我正在使用下面的PHP代码访问Redis,我已经将下面的代码装载到ApachePHP部署中
考虑在此处使用K8SLivelity
和readiness
探测器,以从错误中自动恢复。您可以找到更多相关信息
您可以使用initContainer
来检查redis服务器的可用性,使用bash,同时使用break
循环,然后让phpache启动。有关更多信息,请查看中的场景2
作为群集IP的Redis服务
请确保redis服务器在您的Web服务器之前运行。我看到Web服务器部署比redis旧,看起来你是在redis之前启动你的应用程序,并且它没有找到redis。当我ssh到两个pod中时,两个都工作了。当我ssh到phpod并运行“phpredis.php”时,也会得到名称解析错误。我确信k8没有按名称公开服务是一个问题。甚至在将上述配置部署到digitalocean群集后也会出现同样的错误。我没有在某些入口点或启动脚本中使用redis。redis处于打开状态,然后我使用http请求调用php文件。使用cli php运行文件时出现相同错误。如果用IP替换服务器名称,是否有效?anmol sharma在^^上面添加了一些注释。这可能会澄清问题。@Saifullahkhan=>Redis通常用作后端服务,不需要将其公开为NodePort,而是使用clusterIP,请参阅上面答案中的部分。=>如果将redis主机设置为redis service
不起作用,请尝试使用完整的dns名称,如redis service.default.svc.cluster.local
=>还可以使用命令kubectl get svc--namespace=kube system
检查miniKube中的dns服务是否工作正常。有关调试DNS签出的详细信息,请参阅此-
REDIS_SERVICE_PORT=tcp://10.104.115.148:6379
REDIS_SERVICE_PORT_6379_TCP=tcp://10.104.115.148:6379
REDIS_SERVICE_SERVICE_PORT=6379
REDIS_SERVICE_PORT_6379_TCP_ADDR=10.104.115.148
REDIS_SERVICE_PORT_6379_TCP_PROTO=tcp```
apiVersion: v1
kind: Service
metadata:
name: redis-service
spec:
type: clusterIP
ports:
- port: 6379
targetPort: 6379
selector:
app: redis