Uploaded image for project: 'Couchbase Kubernetes'
  1. Couchbase Kubernetes
  2. K8S-1713

Expose port 11207 on all Couchbase Server pods

    XMLWordPrintable

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • 2.1.0
    • operator
    • None
    • 41: 2.2, Bugs.
    • 1

    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

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            simon.murray Simon Murray added a comment -

            A prefect example of not keeping-it-simple-stupid

            simon.murray Simon Murray added a comment - A prefect example of not keeping-it-simple-stupid

            People

              simon.murray Simon Murray
              matt.carabine Matt Carabine
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty