Развертывание загрузочного приложения Spring с Redis в Kubernetes - ошибка соединения с Jedis - PullRequest
0 голосов
/ 28 октября 2018

При развертывании в kubernetes соединение redis не может установить соединение из-за ошибки в соединении jedis.

"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;
    }

Кто-нибудь преодолел эту проблему?ТИА.

1 Ответ

0 голосов
/ 29 октября 2018

Вам необходимо сначала обновить свой сервис, чтобы отразить:

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, и ваше приложение для весенней загрузки развернуто в одном и том же пространстве имен.Если нет, вам нужно подробно определить ваше имя хоста, используя.(например: "redis-master.mynamespace").

...