Description
Today the ports exposed for Couchbase Server pods are dependent on the service.
This makes sense as there's no point exposing port 18093 (query service) on a data node for example.
Since Couchbase Server 6.5 and SDK 3.x with the introduction of GCCCP (Matt Ingenthron can probably fill you in on the details), the SDKs can bootstrap of off any node in the cluster using the Data Service (port 11207).
This means that we should be exposing port 11207 for every single Couchbase Server pod, so that the SDK can use this port for bootstrapping.
Today due to the filtering you get loads of nasty errors if you hit a pod that isn't data:
Caused by: java.net.ConnectException: finishConnect(..) failed: Connection refused
|
at com.couchbase.client.core.deps.io.netty.channel.unix.Errors.throwConnectException(Errors.java:124)
|
at com.couchbase.client.core.deps.io.netty.channel.unix.Socket.finishConnect(Socket.java:251)
|
at com.couchbase.client.core.deps.io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.doFinishConnect(AbstractKQueueChannel.java:655)
|
at com.couchbase.client.core.deps.io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.finishConnect(AbstractKQueueChannel.java:635)
|
at com.couchbase.client.core.deps.io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.shutdownInput(AbstractKQueueChannel.java:449)
|
at com.couchbase.client.core.deps.io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.readEOF(AbstractKQueueChannel.java:486)
|
at com.couchbase.client.core.deps.io.netty.channel.kqueue.KQueueEventLoop.processReady(KQueueEventLoop.java:213)
|
at com.couchbase.client.core.deps.io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:289)
|
at com.couchbase.client.core.deps.io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
|
at com.couchbase.client.core.deps.io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
|
at com.couchbase.client.core.deps.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
|
at java.base/java.lang.Thread.run(Thread.java:834)
|
While the Operator does filter its own SRV record to only include data nodes, for completeness and flexibility we should be exposing port 11207 on all pods.
Some SDK implementations may expect that this is available.
Attachments
Issue Links
- relates to
-
K8S-2293 Expose index/view NodePort service on data pods
- Closed