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.