首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes:获取名称解析错误

Kubernetes:获取名称解析错误
EN

Stack Overflow用户
提问于 2020-07-20 18:50:03
回答 1查看 3.9K关注 0票数 1

我正在将php和redis部署到一个本地minikube集群中,但是在与名称解析相关的错误下面。

代码语言:javascript
复制
Warning: Redis::connect(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /app/redis.php on line 4

Warning: Redis::connect(): connect() failed: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /app/redis.php on line 4

Fatal error: Uncaught RedisException: Redis server went away in /app/redis.php:5 Stack trace: #0 /app/redis.php(5): Redis->ping() #1 {main} thrown in /app/redis.php on line 5

我正在使用以下配置文件:

apache-php.yaml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: webserver
  labels:
    app: apache
spec:
  replicas: 1
  selector:
    matchLabels:
      app: apache
  template:
    metadata:
      labels:
        app: apache
    spec:
      containers:
      - name: php-apache
        image: webdevops/php-apache
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 80
        volumeMounts:
        - name: app-code
          mountPath: /app
      volumes:
        - name: app-code
          hostPath:
            path: /minikubeMnt/src
---
apiVersion: v1
kind: Service
metadata:
  name: web-service
  labels:
    app: apache
spec:
  type: NodePort
  ports:
  - port: 80
    protocol: TCP
  selector:
    app: apache

redis.yaml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  labels:
    app: redis
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
        - name: redis
          image: redis:5.0.4
          imagePullPolicy: IfNotPresent
          ports:
             - containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  type: NodePort
  ports:
    - port: 6379
      targetPort: 6379
  selector:
    app: redis

我正在使用下面的PHP代码访问Redis,我已经将下面的代码挂载到apache部署中。

代码语言:javascript
复制
<?php
ini_set('display_errors', 1);
$redis = new Redis();
$redis->connect("redis-service", 6379);
echo "Server is running: ".$redis->ping();

服务的群集仪表板视图如下:

提前谢谢。

当我运行env命令时,获取与redis相关的值,当我使用IP:10.104.115.148访问redis时,它就正常工作了。

代码语言:javascript
复制
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```
EN

回答 1

Stack Overflow用户

发布于 2020-07-20 20:29:10

考虑在这里使用K8S livelinessreadiness探测,以便从错误中自动恢复。您可以找到更多相关信息,这里

您可以使用initContainer来检查redis服务器的可用性,使用bash while循环和break,然后让php启动。有关更多信息,请查看场景2 in 这里

作为集群IP的Redis服务

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: redis-service
spec:
  type: clusterIP
  ports:
    - port: 6379
      targetPort: 6379
  selector:
    app: redis 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63001997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档