On this page

    Customizing EKS Deployment

    This topic discusses additional topics associated with customizing or modifying the default configuration for deploying Dremio in an Amazon EKS environment.

    Dremio Enterprise Edition

    If you are deploying with Dremio Enterprise Edition, do the following:

    1. Contact Dremio to obtain read-access to the Dremio EE image (a dockerhub ID is needed). The Dremio EE image is not public.
    2. Create a Dremio-specific Kubernetes secret.
      Follow the instructions in Specifying ImagePullSecrets on a Pod.
      For example, to create a secret in Kubernetes, specify the following parameters:
      kubectl create secret docker-registry dremio-docker-secret --docker-username=your_username --docker-password=your_password_for_username --docker-email=DOCKER_EMAIL
      

      Note: Pods can only reference image pull secrets in their own namespace, so this process needs to be done on the namespace where Dremio is being deployed.

    3. Modify the following properties in values.yaml file:
      • image: Dremio EE image name.
      • imagePullSecrets: Dremio-specific Kubernetes secret.

    Cluster Configuration

    Dremio provides a default cluster configuration that is deployed via the provided helm charts. To change the cluster configuration, modify the properties in the values.yaml file.

    In the following default Dremio cluster configuration, each Dremio master-coordinator, slave-coordinator, and executor are a pod.

    Pod TypePod CountMemory/CPUPersistent Volume Size/UsageDescription
    master-coordinator116GB
    8 cores
    100GB: Persistent volume with metadata.The master-coordinator pod manages the metadata.
    Dremio admin1n/a0: No persistent volume.The admin pod is used to run offline Dremio admin commands. To accomplish this, it uses the master-coordinator’s persistent volume and metadata. Typically, this pod is not running.
    slave-coordinator016GB
    8 cores
    0: No persistent volume.The slave-coordinator pod manages query planning, Dremio UI/REST requests, and ODBC/JDBC client requests.
    executor316GB
    4 cores
    100GB: Persistent volume with reflections, spilling, results, and upload data.The executor pod is responsible for query execution.
    zookeeper31024KB
    0.5 cores
    10GiThe zookeeper pod manages coordination between the Dremio pods.

    Load Balancer

    Load balancing distributes the workload from Dremio’s web (UI and REST) client and ODBC/JDBC clients. All web and ODBC/JDBC clients connect to a single endpoint (load balancer) rather than directly to an individual pod. These connections are then distributed across available coordinator (master-coordinator and slave-coordinator) pods.

    note:

    Recommendation: Load balancing is recommended when more than one coordinator pod (master-coordinator and slave-coordinator) is implemented.

    If your LoadBalancer supports session affinity, it is recommended that you enable the sessionAffinity property. Specifically, if you plan to configure two or more (2+) coodinator pods (master and slave-coordinator), you must have the Load Balancer service and session affinity property enabled. See the values.yaml section for more information.

    The following table shows which configurations require a load balancer configured and sessionAffinity enabled:

    Master-coordinator
    Pod
    Slave-coordinator
    Pod
    Load Balancer
    Session Affinity
    10No
    11+Yes

    Deprecated:

    As of Amazon EKS v1.11, session affinity is not available.

    values.yaml

    The values.yaml file is used to set the Dremio image, Dremio pods, and load balancing properties.

    PropertyDescriptionDefault
    imageSpecifies the image containing the Dremio software.
    If your image is Dremio Enterprise Edition, you must provide the Kubernetes secret for Dremio with the imagePullSecretes property.
    dremio/dremio-oss (Community Edition).
    coordinatorSpecifies the configuration (memory, cpu, count, and volume size) for coordinator pods.See the values.yaml file for current values.
    executorSpecifies the configuration (memory, cpu, count, and volume size) for Dremio’s executor pods.See the values.yaml file for current values.
    zookeeperSpecifies the configuration (memory, cpu, count, and volume size) for Dremio Zookeeper pods.See the values.yaml file for current values.
    serviceTypeSpecifies the load balancer service.LoadBalancer
    sessionAffinitySpecifies your load balancer session affinity. If you have configured more than one (1+) slave-coodinators, this property must be enabled.ClientIP
    storageClassSpecifies a custom storage class. If you want to use a value other than the default, uncomment this value and provide the custom storage class.The default persistent storage supported by the Kubernetes platform.
    imagePullSecretsSpecifies the authorization required for Kubernetes to pull Dremio Enterprise Edition images. This property is used in conjunction with the image property.n/a

    Config Directory

    The files in the config directory are used for the following:

    • Dremio configuration and environment properties
    • Dremio Logs
    • Deployment-specific files

    Each file in the config directory provides defaults that can be used out-of-the-box, however, if you want to customize Dremio, do the following:

    1. Review and modify the files.
    2. Add deployment-specific files (for example, core-site.xml) by copying your file(s) to this directory.
      Any customizations to your Dremio environment are propagated to all the pods when installing or upgrading the deployment.
    FileDescription
    dremio.confUsed to specify various options related to node roles, metadata storage, distributed cache storage and more.
    See Configuration Overview if you want to customize your Dremio environment.
    dremio-envUsed for setting Java options and log directories.
    See Configuration Overview if you want to customize your Dremio environment.
    logback-access.xmlUsed to control the log access.
    logback.xmlUsed to control the log levels.