Kloudfuse Install on a Shared Kubernetes Cluster

Kloudfuse can be installed on a shared Kubernetes cluster. Within the shared cluster, it is highly recommended to have a dedicated node group for running Kloudfuse.

Using Node Affinity, Taints and Tolerations to Deploy Kloudfuse on the Dedicated Node Group.

Add Taint to Node Group

Ensure that the nodes have NoSchedule taint, e.g., dedicated=kfuse:NoSchedule taint. It is recommended that the taint is configured through the cloud provider, rather than kubectl. This ensures that the taints are persisted across node restart or replacement.

On GKE, refer to Configure workload separation in GKE  |  Google Kubernetes Engine (GKE)  |  Google Cloud .

On EKS, refer to Prevent Pods from being scheduled on specific nodes - Amazon EKS .

Taints ensure that no other workloads gets scheduled on the node.

Add Label to Node Group

Ensure that the nodes have a custom label for Kloudfuse, e.g., dedicated=kfuse. The custom labels will be used to configure either Node Selector or Node Affinity to ensure Kloudfuse workloads only gets scheduled on the dedicated node group.

Configure Helm Custom Values

Tolerations

In the default values.yaml, each Kfuse service has a tolerations section that is defaulted to []. Copy and overwrite the tolerations sections in the custom_values.yaml. Using the example taint configuration above, add the following in each tolerations section:

tolerations: - key: "dedicated" operator: "Equal" value: "kfuse" effect: "NoSchedule"

Node Affinity

In the default values.yaml, each Kfuse service has a affinity section that is defaulted to {}. Copy and overwrite the the affinity section and add a nodeAffinity section in the custom_values.yaml. Using the example label configuration above, add the following in each nodeAffinity section:

affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: dedicated operator: In values: - kfuse

Node Selector

Only one of Node Affinity or Node Selector is needed to be configured. Skip this section, if Node Affinity is already configured in the custom_values.yaml

In the default values.yaml, each Kfuse service has a nodeSelector section that is defaulted to {}. Copy and overwrite the the nodeSelector section in the custom_values.yaml. Using the example label configuration above, add the following in each nodeSelector section:

nodeSelector: dedicated: kfuse