Skip to the content.

Individual Pod Services

The exposePodsByName field on Listener (and AttachedConnectorBinding) creates individual services for each pod rather than load-balancing across them.

Platform Support

Kubernetes only — pods don’t exist on other platforms.

How It Works

apiVersion: skupper.io/v2alpha1
kind: Listener
metadata:
  name: redis
spec:
  routingKey: redis
  host: redis
  port: 6379
  exposePodsByName: true    # The key field

What Gets Created

Without exposePodsByName:
  redis:6379 → load-balanced across all redis pods

With exposePodsByName:
  redis:6379          → still load-balanced (aggregate)
  redis-0:6379        → specifically redis-0
  redis-1:6379        → specifically redis-1
  redis-2:6379        → specifically redis-2

Each pod gets a dedicated service endpoint named after the pod, in addition to the aggregate service.

Use Cases

Workload Why Individual Pod Services
Redis Cluster Reach specific master/replica nodes
Kafka Connect to specific brokers
PostgreSQL (streaming replication) Target primary vs replicas
Elasticsearch Reach specific nodes
Any StatefulSet Stateful workloads needing addressable instances

Available On

Resource Field
Listener spec.exposePodsByName
AttachedConnectorBinding spec.exposePodsByName