Install Kloudfuse with Multiple Zone Availability
The Kloudfuse platform supports pods deployment across multiple availability zones (multi-AZ) to ensure high availability and fault tolerance. Each zone must have at least one pod to run the supported components.
Current support for multi-AZ is limited to:
-
Ingress-NGINX
-
Redis (primary/secondary architecture)
-
Ingester
This configuration helps maintain service continuity in the event of a zone-level failure, by distributing workloads across multiple zones.
Specify these values in your custom-values.yaml
file:
Configuration for Multi-AZ Cluster Setup
ingester:
# For multi-AZ cluster setup, replica counts should be k * (number of different zones in the cluster) where k= 1,2,3...
replicaCount: 1
service:
annotations:
service.kubernetes.io/topology-mode: Auto
ingress-nginx:
controller:
service:
annotations:
service.kubernetes.io/topology-mode: Auto
# replicaCount should be equal to k * (number of different zones in the cluster) where k= 1,2,3... for multi-AZ setup
replicaCount: 3
# This is needed to allow restarts with strict podAntiAffinity (one pod can be destroyed so that a new one is created on the same node)
updateStrategy:
rollingUpdate:
maxUnavailable: 1
type: RollingUpdate
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/component: controller
# This should be the same as the release name
app.kubernetes.io/instance: kfuse-pipeline
topologyKey: "kubernetes.io/zone"
redis:
replica:
# replicaCount - Specify the number of postgres replicas to deploy
replicaCount: 1 # For multi-AZ cluster setup, replica counts should be k * (number of different zones in the cluster) where k= 1,2,3... , otherwise 1
updateStrategy:
rollingUpdate:
maxUnavailable: 1
type: RollingUpdate
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app.kubernetes.io/name: kfuse-redis
app.kubernetes.io/component: replica
# This should be the same as the release name
app.kubernetes.io/instance: kfuse-pipeline
topologyKey: "kubernetes.io/zone"
sentinel:
service:
annotations:
service.kubernetes.io/topology-mode: Auto