0

I have a k8s cluster with a redis service and a java service, both in the same namespace. The redis pod gets created, I can port forward it and connect using redis-cli, also tried creating a pod with a busybox image just to try pring and telnet redis 6379, both works. However, using my java service to connect does not work. Any ideas on why that could be happening? Maybe its some redis configuration.

I get this error

redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

using on the service:

public void test() {
    final JedisPoolConfig poolConfig = buildPoolConfig();
    JedisPool jedisPool = new JedisPool("redis", 6379);
    try(Jedis jedis = jedisPool.getResource()) {
        jedis.set( "somekey", "somevalue" );
    }
}

And here is my redis service yaml file

apiVersion: v1
kind: ConfigMap
metadata:
  name: redis
data:
  redis-config: |
    maxmemory 2mb
    maxmemory-policy allkeys-lru

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

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
spec:
  selector:
    matchLabels:
      app: redis
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - image: redis:6.2.6
        name: redis
        command:
          - redis-server
          - "/redis-master/redis.conf"
        env:
          - name: MASTER
            value: "true"
        ports:
          - containerPort: 6379
        resources:
          limits:
            memory: 300Mi
            cpu: 800m
        volumeMounts:
          - mountPath: /redis-master-data
            name: data
          - mountPath: /redis-master
            name: config
      volumes:
      - name: data
        emptyDir: {}
      - name: config
        configMap:
          name: redis
          items:
            - key: redis-config
              path: redis.conf

0 Answers0