Using unmanaged EKS clusters¶
Setup¶
Create your EKS cluster¶
To create your Amazon Elastic Kubernetes Service (EKS) cluster, follow the AWS user guide. We recommend that you allocate at least 15 GB of memory for each cluster node. More memory may be required if you plan on running very large in-memory recipes.
You’ll be able to configure the memory allocation for each container and per-namespace using multiple containerized execution configurations.
Prepare your local aws, docker, and kubectl commands¶
Follow the AWS documentation to ensure the following on your local machine (where Dataiku DSS is installed):
The
aws ecrcommand can list and create docker image repositories and authenticatedockerfor image push.The
kubectlcommand can interact with the cluster.The
dockercommand can successfully push images to the ECR repository.
Note
- Cluster management has been tested with the following versions of Kubernetes:
1.23
1.24
1.25
1.26
1.27
1.28
1.29
1.30
1.31
1.32
1.33
1.34
1.35
1.36
There is no known issue with other Kubernetes versions.
Create base images¶
Build the base image by following these instructions.
Create new image build and containerized execution configurations¶
Go to: Administration > Settings > Containerized Execution
Add a new image build configuration
The image registry URL is the one given by
aws ecr describe-repositories, without the image name. It typically looks likeXXXXXXXXXXXX.dkr.ecr.us-east-1.amazonaws.com/PREFIX, whereXXXXXXXXXXXXis your AWS account ID,us-east-1is the AWS region for the repository, andPREFIXis an optional prefix to triage your repositories.Set the ECR-specific push/authentication option on the image build configuration.
Add a new container execution configuration of type “Kubernetes”
Finish by clicking Push base images.
You’re now ready to run recipes and models on EKS.
Using GPUs¶
AWS provides GPU-enabled instances with NVIDIA GPUs. Using GPUs for containerized execution requires the following steps.
Enable GPU support on the cluster¶
To execute containers that leverage GPUs, your worker nodes and the control plane must also support GPUs. The following steps describe a simplified way to enable a worker node leverage its GPUs:
Install the NVIDIA Driver that goes with the model of GPU on the instance.
Install the Cuda driver. We recommend using the runfile installation method. Note that you do not have to install the cuda toolkit, as the driver alone is sufficient.
Install the NVIDIA docker runtime and set this runtime as the default docker runtime.
Note
These steps can vary, depending on the underlying hardware and software version requirements for your projects.
Finally, enable the cluster GPU support with the NVIDIA device plugin. Be
careful to select the version that matches your Kubernetes version (v1.10 as of July 2018).
Add a custom reservation¶
For your container execution to be located on nodes with GPU accelerators, and for EKS to configure the CUDA driver on your containers, the corresponding EKS pods must be created with a custom “limit” (in Kubernetes parlance). This indicates that you need a specific type of resource (standard resource types are CPU and memory).
You must configure this limit in the containerized execution configuration. To do this:
In the “Custom limits” section, add a new entry with key:
nvidia.com/gpuand value:1(to request 1 GPU).Add the new entry and save the settings.
Deploy¶
You can now deploy your GPU-required recipes and models.