簡體   English   中英

在Kubernetes中使用Redis部署Spring Boot應用程序-Jedis Connection Refused錯誤

[英]Deploying a Spring boot Application with Redis in Kubernetes--Jedis Connection Refused Error

部署到kubernetes時,由於jedis連接被拒絕錯誤,redis連接無法建立連接。

"message": "Cannot get Jedis connection; nested exception is 
redis.clients.jedis.exceptions.JedisConnectionException: 
java.net.ConnectException: Connection refused (Connection refused)",

部署yaml文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: redis-master
spec:
  selector:
    matchLabels:
      app: redis
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis-master
        image: gcr.io/google_containers/redis:e2e

        ports:
        - containerPort: 6379

        volumeMounts:
        - name: redis-storage
          mountPath: /data/redis

      volumes:
      - name: redis-storage
---
apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
spec:
  ports:
    - port: 6379
  selector:
    app: redis

---在項目中使用的Jedis示例代碼:

JedisConnectionFactory jedisConnectionFactoryUpdated() {

        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
        redisStandaloneConfiguration.setHostName("redis-master");
        redisStandaloneConfiguration.setPort(6379);

        JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration.builder();
        jedisClientConfiguration.connectTimeout(Duration.ofSeconds(60));// 60s connection timeout

        JedisConnectionFactory jedisConFactory = new JedisConnectionFactory(redisStandaloneConfiguration,
                jedisClientConfiguration.build());

        return jedisConFactory;
    }

有人克服了這個問題嗎? TIA。

您需要先更新您的服務以反映:

apiVersion: v1
kind: Service
metadata:
  name: redis-master
  labels:
    app: redis
spec:
  ports:
    - port: 6379
      targetPort: 6379
  selector:
    app: redis

完成此操作后,您可以檢查您的Redis服務是否已啟動並使用nmap進行響應。 這是使用我的nmap圖像的示例:

kubectl run --image=appsoa/docker-alpine-nmap --rm -i -t nm -- -Pn 6379 redis-master

另外,請確保將Redis和Spring Boot應用程序都部署到相同的名稱空間。 如果不是,則需要使用明確定義主機名。 (即:“ redis-master.mynamespace”)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM