DevOpsCube Posted December 7, 2022 Share Posted December 7, 2022 In this Kubernetes tutorial, you will learn to create an AWS EKS cluster using eksctl. I will also cover the important eksctl concepts. Prerequisites To work with eksctl you need to have the following installed and configured on your workstation. AWS CLI installed and configured with required IAM permissions to launch eks cluster. eksctl CLI should be installed kubectl should be installed. How Does eksctl Work? When you deploy a eksctl YAML file or execute a cluster create command, it deploys Cloudformation templates at the backend. Ideally, the Cloudformation templates deploy the clusters. eksctl is just a wrapper for Cloudformation. Once you execute the eksctl cluster create command and if you look at the Cloudformation dashboard, you can see Cloudformation got created for EKS and getting deployed. Create EKS Cluster Using eksctl You can launch an EKS cluster using eksctl in two ways. Using eksctl CLI and parameters Using eksctl CLI and YAML config. Using CLI and parameters is pretty straightforward. However I would prefer the YAML config as you can have the cluster configuration as a config file. Create a file named eks-cluster.yaml vi eks-cluster.yaml Copy the following contents to the file. You need to replace the VPC id, CIDR, and subnet IDs with your own ids. Replace techiescamp with the name of your keypair. apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: eks-spot-cluster region: us-west-2 vpc: id: "vpc-0951fe2c76e36eab9" cidr: "10.0.0.0/16" subnets: public: us-west-2a: { id: subnet-01b8ff5eaa0b39c10 } us-west-2b: { id: subnet-0e5de906289149fc0 } us-west-2c: { id: subnet-0185f1eee8a1a6561 } managedNodeGroups: - name: ng-db instanceType: t3.small labels: { role: builders } minSize: 2 maxSize: 4 ssh: allow: true publicKeyName: techiescamp tags: Name: ng-db - name: ng-spot instanceType: t3.medium labels: { role: builders } minSize: 3 maxSize: 6 spot: true ssh: allow: true publicKeyName: techiescamp tags: Name: ng-spot The above config has the following. Cluster VPC configurations with public subnet spanning three availability zones. Two managed node groups. One with regular on-demand instances and one with spot instances. Now that you have a config ready, deploy the cluster using the following command. It will take a while for the cluster control plane and worker nodes to be provisioned. eksctl create cluster -f eks-cluster.yaml The following security groups get created during the cluster launch. Connect to EKS cluster Once the cluster is provisioned, you can use the following AWS CLI command to get or update the kubeconfig file. aws eks update-kubeconfig --region us-west-2 --name eks-spot-cluster You should see the following output. ➜ public git:(main) ✗ aws eks update-kubeconfig --region us-west-2 --name eks-spot-cluster Added new context arn:aws:eks:us-west-2:936855596904:cluster/eks-spot-cluster to /Users/bibinwilson/.kube/config Verify the cluster connectivity by executing the following kubectl commands. kubectl cluster-info kubectl get nodes kubectl get po -n kube-system Possible eksctl Errors Let’s look at some of the possible eksctl errors. Stack Already Exists Error If you try to create a NodeGroup using eksctl with an existing Cloudformation stack, you will get the following error. creating CloudFormation stack "stack-name": operation error CloudFormation: CreateStack, https response error StatusCode: 40, AlreadyExistsException: Stack [stack-name] already exists To rectify this, Go to the Cloudformation dashboard and delete the cloud formation stack for the NodeGroup. Conclusion We have looked into AWS EKS cluster creation using eksctl CLI. When it comes to production deployment, ensure you follow the kubernetes cluster best practices. If you are planning for Kubernetes certification, you can use eksctl to deploy test clusters very easily. Also, check out the kubernetes certification coupon to save money on CKA, CKAD, and CKS certification exams. View the full article Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.