Create ARM Nodepools for Kubernetes Clusters
Table of Contents
The following guide demonstrates how to create nodepools with ARM architecture.
Wallaroo supports for ARM architecture CPUs. For example, Azure supports Ampere® Altra® Arm-based processor included with the following virtual machines:
The following templates demonstrate how to create an ARM nodepool, then assign that nodepool to an existing cluster. These steps can be used in conjunction with Wallaroo Enterprise Install Guides.
- ARM nodes are required both for the Wallaroo inference engine, and for converting Wallaroo non-native runtimes. For standard installs of Wallaroo, the options are either:
- Create two nodepools:
- One nodepool with the
wallaroo.ai/engine=true:NoSchedule
taint for the Wallaroo Engine - One nodepool without taints for Wallaroo non-native runtime conversions.
- One nodepool with the
- Create one nodepool without taints used for both auto-conversion and engine deployments.
- Create two nodepools:
For custom tolerations, see Taints and Tolerations Guide.
The following scripts show examples of setting up an ARM nodepool for use with the Wallaroo instance.
The following sample script for Microsoft Azure command line tool creates a nodepool into an existing cluster with the Standard_D4ps_v5
virtual machine, providing 4 cpus and 16 GB RAM under the the Ampere® Altra® Arm-based processors. For more details, see Azure Virtual Machines Dpsv5 and Dpdsv5-series.
This provides as 0-3 nodes in the nodepool, allowing it to spin up or down VMs as required.
RESOURCE_GROUP="YOUR RESOURCE GROUP"
CLUSTER_NAME="YOUR CLUSTER NAME"
ARM_NODEPOOL_NAME="YOUR ARM NODEPOOL NAME"
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $ARM_NODEPOOL_NAME \
--node-count 0 \
--node-vm-size Standard_D4ps_v5 \
--node-taints wallaroo.ai/engine=true:NoSchedule \
--enable-cluster-autoscaler \
--min-count 0 \
--max-count 3
For example, to create an ARM nodepool arm_node_01
to the existing cluster wallaroo-cluster
in the resource group sample-group
, the following would be used:
RESOURCE_GROUP="sample-group"
CLUSTER_NAME="wallaroo-cluster"
ARM_NODEPOOL_NAME="arm_node_01"
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $ARM_NODEPOOL_NAME \
--node-count 0 \
--node-vm-size Standard_D4ps_v5 \
--node-taints wallaroo.ai/engine=true:NoSchedule \
--enable-cluster-autoscaler \
--min-count 0 \
--max-count 3
The following sample script for Amazon Web Services tool eksctl creates a nodepool with the m6g.xlarge
virtual machine, providing 4 cpus and 16 GB RAM under the the Arm-based AWS Graviton2 processors processors. For more details, see Amazon EC2 M6g Instances.
The following example template shows adding the nodepool to an existing cluster.
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata:
name: YOUR CLUSTER NAME HERE # This must match the name of the existing cluster
region: YOUR REGION HERE
managedNodeGroups:
- name: YOUR NODEPOOL NAME HERE
instanceType: m6g.medium # the ARM based virtual machine to use
minSize: 1
maxSize: 1
taints:
- key: wallaroo.ai/engine # allows the Wallaroo engine to run in this nodepool
value: "true"
effect: NoSchedule
tags:
k8s.io/cluster-autoscaler/node-template/label/k8s.dask.org/node-purpose: engine
k8s.io/cluster-autoscaler/node-template/taint/k8s.dask.org/dedicated: "true:NoSchedule"
iam:
withAddonPolicies:
autoScaler: true # used to autoscale between the minimum and maximum nodes
containerRuntime: containerd
amiFamily: AmazonLinux2
availabilityZones:
- INSERT YOUR ZONE HERE # this should match the region for optimal performance
volumeSize: 100
The following sample script for Google Cloud Platform command line tool creates a nodepool with the t2a-standard-4
virtual machine, providing 4 cpus and 16 GB RAM under the the Ampere® Altra® Arm-based processors. For more details, see Tau T2A machine series.
The following must be specified:
- Cluster Name: The cluster the nodepool is attached to.
- Zone and node location: The location the nodepool is hosted in. For optimal performance, this should match the zone the cluster is in.
- Machine type: The virtual machine to use.
- Number of nodes: The number of nodes used for the nodepool. This example uses 1.
- Service account: The IAM service account. If none is specified, then the default is used.
CLUSTER_NAME="YOUR CLUSTER NAME"
ARM_NODEPOOL_NAME="YOUR NODEPOOL NAME"
ZONE="YOUR ZONE"
NODE_LOCATIONS="YOUR LOCATIONS"
NUM_NODES=YOUR NUMBER OF NODES
gcloud container node-pools create $ARM_NODEPOOL_NAME \
--cluster $CLUSTER_NAME \
--zone $ZONE \
--node-locations NODE_LOCATIONS \
--node-taints=wallaroo.ai/engine=true:NoSchedule \
--machine-type T2A_MACHINE_TYPE \
--num-nodes NUM_NODES
For example, to create an ARM nodepool arm_node_01
to the existing cluster wallaroo-cluster
in the resource group sample-group
, the following would be used:
CLUSTER_NAME="wallaroo-cluster"
ZONE="us-west1-a"
NODE_LOCATIONS="us-west1-a"
ARM_NODEPOOL_NAME="arm_node_01"
NUM_NODES=1
gcloud container node-pools create $ARM_NODEPOOL_NAME \
--cluster $CLUSTER_NAME \
--zone $ZONE \
--node-locations NODE_LOCATIONS \
--node-taints=wallaroo.ai/engine=true:NoSchedule \
--machine-type t2a-standard-4 \
--num-nodes NUM_NODES
Deployment Tutorials
The following tutorials demonstrate deploying a pipeline with the specified architecture.