Availability
This page explains how to configure 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 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 are scheduled on the same node.
Refer to Pod affinities for more details.
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 is not scheduled. -
A
soft
affinity setting is similar to thehard
one but may schedule two or more pods to the same node if the affinity settings cannot be satisfied. -
The
hard-az
andsoft-az
settings match the behavior above but apply to scheduling across availability zones rather than simply nodes.
Refer to Availability zones for more information.
Warning
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.
YAML
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.
YAML
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.
Refer to Overprovisioning for more details.