Availability

This section configures kdb Insights Enterprise availability properties. Availability relates to how fault tolerant the application is to failures, either within the application or due to underlying infrastructure.

Pod assignments

Kubernetes provides applications with control over where their pods will run through affinities and anti-affinities. kdb Insights Enterprise allows you to tune these settings as required.

By default the application uses hard, anti-affinities to provide node-level resilience for all services. This ensures pod replicas are all scheduled to different nodes to protect against node failures. The hard component of this ensures that no two pods of the same service will be scheduled on the same node.

Presets

There are four different preset affinity types supported by the application; hard (default), soft, hard-az, soft-az.

A hard affinity setting is the default setting for all services, ensuring that pods are only scheduled on nodes which do not already have a pod of the same service type running on them. If there is no node to satisfy the anti-affinity, the pod will not be scheduled.

A soft affinity setting setting is similar to the hard one but may schedule two or more pods to the same node if the affinity settings cannot be satisfied.

The hard-az and soft-az settings match the behavior above but apply to scheduling across availability zones rather than simply nodes.

Hard anti-affinities

If auto-scaling of the cluster node pool is enabled, a hard anti-affinity may cause a cluster to scale to satisfy requirements.

To configure services with one of the preset anti-affinities, you can override the default behavior in your install values file. Below configures the information-service and dap components with soft affinities.

information-service:
affinity: soft

kxi-operator:
config:
dap:
affinity: soft


Custom

If the presets don't suit your needs, you can specify custom affinities and anti-affinities as below. Refer to the Kubernetes documentation for the complete set of options.

information-service:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- topologyKey: "kubernetes.io/hostname"
labelSelector:
matchExpressions:
- key: "insights.kx.com/serviceName"
operator: In
values:
-  insights-information-service


Overprovisioning

kdb Insights Enterprise provides support for overprovisioning your cluster to improve scalability and fault tolerance. This involves deploying an additional chart to your cluster, causing the node pool to scale. The process of scaling a cluster can be slow, so this chart is provided as a way of pre-scaling to mitigate this.