Install Karpenter
The first thing we'll do is install Karpenter in our cluster. Various pre-requisites were created during the lab preparation stage, including:
- An IAM role for Karpenter to call AWS APIs
- An IAM role and instance profile for the EC2 instances that Karpenter creates
- An EKS cluster access entry for the node IAM role so the nodes can join the EKS cluster
- An SQS queue for Karpenter to receive Spot interruption, instance re-balance and other events
You can find the full installation documentation for Karpenter here.
All that we have left to do is install Karpenter as a helm chart:
~$aws ecr-public get-login-password \
--region us-east-1 | helm registry login \
--username AWS \
--password-stdin public.ecr.aws
~$helm upgrade --install karpenter oci://public.ecr.aws/karpenter/karpenter \
--version "${KARPENTER_VERSION}" \
--namespace "karpenter" --create-namespace \
--set "settings.clusterName=${EKS_CLUSTER_NAME}" \
--set "settings.interruptionQueue=${KARPENTER_SQS_QUEUE}" \
--set controller.resources.requests.cpu=1 \
--set controller.resources.requests.memory=1Gi \
--set controller.resources.limits.cpu=1 \
--set controller.resources.limits.memory=1Gi \
--set replicas=1 \
--wait
NAME: karpenter
LAST DEPLOYED: [...]
NAMESPACE: karpenter
STATUS: deployed
REVISION: 1
TEST SUITE: None
Karpenter will be running as a deployment in the karpenter
namespace:
~$kubectl get deployment -n karpenter
NAME READY UP-TO-DATE AVAILABLE AGE
karpenter 1/1 1 1 105s
Now we can move on to configuring Karpenter so that it will provision infrastructure for our pods.