CouchbaseCluster Status

    +
    Status fields attached to CouchbaseCluster resources by the Operator.

    Every CouchbaseCluster resource has a status object. This object is used to communicate non-obvious resources associated with the cluster or domain specific information that would otherwise be unavailable. The provided status information may be helpful in problem determination or configuring other resources that reference the Couchbase cluster.

    Status fields should be considered read only. Any modifications will not affect the cluster and will be reverted by the Operator.

    An example status object may look like the following, with individual attributes explained below:

    apiVersion: couchbase.com/v2
    kind: CouchbaseCluster
    status:
      phase: Running
      reason: ""
      controlPaused: false
      conditions:
      - type: Available
        status: "True"
        reason: Available
        lastUpdateTime: "2020-01-29T11:46:22Z"
        lastTransitionTime: "2020-01-29T11:46:22Z"
      clusterId: "91f7b67a0aa6a2e2b0ecefb63528194a"
      size: 3
      members:
        ready:
        - my-cluster-0000
        unready:
        - my-cluster-0001
        - my-cluster-0002
      currentVersion: 6.5.0
      adminConsolePort: "30245"
      adminConsolePortSSL: "31749"
      exposedFeatures:
      - xdcr
      buckets:
        - compressionMode: passive
          conflictResolution: seqno
          enableFlush: false
          enableIndexReplica: false
          evictionPolicy: valueOnly
          ioPriority: low
          memoryQuota: 100
          name: default
          password: ""
          replicas: 1
          type: couchbase
      users:
      - david
      - matthew
      groups:
      - readonly

    The CouchbaseCluster custom resource definition defines custom formatting that is used by the following command:

    $ kubectl get couchbaseclusters
    NAME         VERSION   SIZE   STATUS    UUID                               AGE
    cb-example   6.5.0     3      Running   91f7b67a0aa6a2e2b0ecefb63528194a   56m

    These fields are provided for convenience when looking up and configuring clusters and map to status variables as follows:

    status

    This section defines and describes individual status fields.

    status.phase

    The phase of cluster life-cycle the Operator is in.

    When the CouchbaseCluster is first created, the Operator will transition into the Creating phase. Cluster creation involves creating the first pod in the cluster and configuring it. If the Operator is restarted while any cluster is in the Creating phase, it will be considered Failed and will need to be recreated.

    If the creation operation succeeds, the Operator will transition into the Running phase and remain here for the lifetime of the cluster. The Operator may transition into the Failed state if it is unable to restart correctly.

    If the creation operation fails, the Operator will transition into the Failed phase and ignore the cluster. The status.reason attribute will be populated with a detailed error message.

    Field rules: This field will be a string, and either Creating, Running or Failed.

    status.reason

    The reason for a cluster creation failure.

    This field is only populated by the Operator when the status.phase field is set to Failed. It gives a detailed reason why the Operator has declared the cluster Failed.

    Field rules: This field will be a string.

    status.controlPaused

    Whether the Operator has acknowledged the cluster is paused.

    This field is used for synchronization of external processes. It will be present and set to true when the Operator has finished processing previous operations, acknowledged that spec.paused is set to true and will not perform any more operations on the cluster.

    The Operator will perform normal reconciliation operations when this field is not present,

    Field rules: This field will be a boolean.

    status.conditions[]

    Conditions are arbitrary domain-specific statuses that can be used to synchronize external processes.

    Conditions are understood by kubectl and may be used to delay operations until a condition exists. For example:

    $ kubectl wait --for=condition=Available couchbasecluster/my-cluster

    You can wait for the presence of any condition defined in status.conditions[].type.

    status.conditions[].type

    What type of condition this relates to.

    Available

    This condition is created when the Operator successfully creates the cluster. It persists for the lifetime of the cluster. The status.conditions[].status field will be True when the cluster is available, and False when any pods are reported as down.

    Balanced

    This condition is created when the Operator has successfully initialized the first pod in the cluster, It persists for the lifetime of the cluster. The status.conditions[].status field will be True when all pods have been balanced in to the cluster, and False when nodes are awaiting addition or being restored.

    ManageConfig

    This condition exists when cluster configuration updates have been rejected by Couchbase server.

    Scaling

    This condition exists when a cluster is scaling up or down.

    Upgrading

    This condition exists when a cluster is upgrading.

    Field rules: This field will be a string.

    status.conditions[].status

    Whether the condition is True or False.

    Field rules: This field will be a string, and either True or False.

    status.conditions[].reason

    A detailed reason for the condition.

    Field rules: This field will be a string.

    status.conditions[].lastUpdateTime

    When the condition was last updated.

    Field rules: This field will be a string and conform to RFC-3339

    status.conditions[].lastTransitionTime

    When the condition last transitioned from one status.conditions[].status to another.

    Field rules: This field will be a string and conform to RFC-3339

    status.clusterId

    The Couchbase cluster ID.

    This is a unique identifier generated during cluster initialization. This is required to establish XDCR replications to this cluster.

    Field rules: This field will be a string.

    status.size

    The current size of the cluster.

    This number includes all pods that are managed by the Operator regardless of their Couchbase status.

    Field rules: This field will be an integer.

    status.members.ready[]

    The set of pods that are managed by the Operator and serving client traffic.

    Field rules: This field will be a list of strings.

    status.members.unready[]

    The set of pods that are managed by the Operator and not serving client traffic.

    Field rules: This field will be a list of strings.

    status.currentVersion

    The current version of Couchbase server being run.

    This field reflects the cluster version only when all pods are running the same version. When a cluster is upgraded it will remain at the initial cluster version until all pods have been upgraded.

    Field rules: This field will be a string.

    status.adminConsolePort (DEPRECATED)

    The NodePort that is listening for connection to the Couchbase web console.

    Use port-forwarding to connect to the console, or service lookup to derive the correct connection string.

    Field rules: This field will be a string.

    status.adminConsolePortSSL (DEPRECATED)

    The NodePort that is listening for connection to the Couchbase web console.

    Use port-forwarding to connect to the console, or service lookup to derive the correct connection string.

    Field rules: This field will be a string.

    status.exposedFeatures[]

    The set of exposed features currently associated with per-node services.

    Field rules: This field will be a list of strings, and either admin, xdcr or client.

    status.buckets[]

    The set of buckets currently managed on the cluster.

    Field rules: This field will be a list of objects describing Couchbase buckets.

    status.users[]

    The set of users currently managed on the cluster.

    Field rules: This field will be a list of strings.

    status.groups[]

    The set of groups currently managed on the cluster.

    Field rules: This field will be a list of strings.