I have asked this SSH question in every AWS interview
In AWS interviews, a popular and insightful question is: "You're trying to SSH into an EC2 instance, but it’s failing. How would you troubleshoot?" While it seems simple, the question evaluates a candidate's problem-solving approach, understanding of AWS infrastructure, and real-world experience. A key expectation is that candidates check security groups first since they act as firewalls controlling traffic. Surprisingly, many overlook this basic yet crucial step, diving into more complex areas instead. The question thus highlights how well candidates understand AWS fundamentals and prioritize troubleshooting steps effectively.
Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at $19.99/month. Cancel anytime
How to Ace (CKAD) Certified Kubernetes Application Developer exam
The Certified Kubernetes Application Developer (CKAD) exam is a practical certification focused on Kubernetes application deployment, maintenance, and troubleshooting. Ideal for engineers managing containerized applications in Kubernetes, it tests real-world problem-solving skills across topics like application design, deployment strategies, observability, security, and networking. The exam includes hands-on tasks performed in a live Kubernetes cluster and allows access to documentation during the test. It's considered pre-professional in difficulty, with a 66% passing score and retake opportunities. Preparation involves mastering Kubernetes CLI commands, understanding concepts like pods, deployments, and ConfigMaps, and practicing with tools like Killer.sh to simulate the exam experience.
Kubernetes resource model, controller pattern and operator SDK refresher
] The Resource Model uses etcd as the state store, with resources defined by objects like Kind, Group, Version, and Resource, which are mapped to API endpoints (e.g., /apis/apps/v1/deployments). Informers and SharedInformers optimize resource management by efficiently watching changes in objects, reducing API server load. Informers utilize Reflectors to fetch and cache data, Listers to retrieve objects from the cache, and Workqueues to process events like Add, Update, or Delete. Controllers act as loops that continuously reconcile the current state of resources (from their status) with the desired state (defined in their spec).
How we avoided an outage caused by running out of IPs in EKS
Adevinta's platform team tackled the critical issue of IP exhaustion in their EKS clusters by implementing custom networking with a secondary CIDR to allocate additional IPs, avoiding potential outages. The problem stemmed from the VPC-CNI plugin's default behavior of assigning an IP address per pod, which strained available IPs in their VPC as clusters scaled. While alternatives like switching to Cilium or enabling IPv6 were explored, the chosen solution balanced speed and reliability, enabling the team to complete their migration to EKS. By carefully testing and rolling out custom networking, the team stabilized IP usage, avoided service disruptions, and ensured seamless scaling for their multi-tenant cluster architecture.
Deploying a Serverless REST API
This guide walks you through deploying a REST API using AWS services like API Gateway, Lambda, DynamoDB, and Cognito with Terraform. The project involves creating an API that allows users to manage a list of Sicilian dishes. It starts with configuring AWS as the provider and setting up an S3 bucket to store Terraform state files. You then create an IAM role with the necessary permissions for Lambda to interact with DynamoDB. The Lambda function itself is written in Python, with methods to handle CRUD operations on the DynamoDB table based on the incoming HTTP requests. Authentication is added via Amazon Cognito to secure write operations. Finally, the API routes (GET, POST, PATCH, DELETE) are implemented to handle the dish data, including a recursive scan function to fetch all dishes from the table.