Vertical scaling (scaling up) involves adding more power (CPU, RAM) to an existing server, while horizontal scaling (scaling out) involves adding more servers to distribute the load.

AWS Lambda is a serverless computing service that allows you to run code in response to events without provisioning or managing servers. It automatically scales and charges only for the compute time consumed.
EC2, or Amazon Elastic Compute Cloud, is a web service that provides resizable compute capacity in the cloud, allowing users to run virtual servers and manage applications on-demand.
Amazon CloudWatch is a monitoring and management service that provides data and insights about AWS resources and applications, allowing users to collect and track metrics, set alarms, and automate responses to changes in their AWS environment.
AWS CLI (Amazon Web Services Command Line Interface) is a tool that allows users to interact with AWS services using command-line commands instead of the web-based console.
I identified the issue by checking the deployment status with `kubectl get deployments` and `kubectl describe deployment <deployment-name>`. I reviewed the logs of the affected pods using `kubectl logs <pod-name>` to find any errors. Then, I checked the events with `kubectl get events` for any warnings or errors related to the deployment. After pinpointing the issue, I corrected the configuration or resource limits in the deployment YAML file and redeployed it using `kubectl apply -f <deployment-file>.yaml`. Finally, I monitored the pods to ensure they were running correctly with `kubectl get pods`.
Kubernetes performs service discovery through its built-in DNS service and environment variables. When a service is created, Kubernetes assigns it a DNS name and a stable IP address. Pods can use this DNS name to communicate with the service, allowing them to discover and connect to it easily. Additionally, Kubernetes updates environment variables in pods with service information, enabling another method for service discovery.
You can perform scaling in Kubernetes using the `kubectl scale` command to adjust the number of replicas in a deployment, or by configuring the Horizontal Pod Autoscaler (HPA) to automatically scale the number of pods based on resource usage metrics.
ConfigMaps and Secrets are Kubernetes objects used to manage configuration data.
– **ConfigMaps** store non-sensitive configuration data in key-value pairs, allowing applications to access configuration settings without hardcoding them in the application code. They can be used to inject environment variables, command-line arguments, or configuration files into pods.
– **Secrets** are similar to ConfigMaps but are specifically designed to store sensitive information, such as passwords, OAuth tokens, or SSH keys. Secrets are encoded and can be mounted as files or exposed as environment variables in pods, ensuring that sensitive data is handled securely.
Both are used to decouple configuration from application code, making applications more portable and easier to manage.
Liveness probes determine if a container is running; if it fails, Kubernetes will restart the container. Readiness probes check if a container is ready to accept traffic; if it fails, the container will be removed from the service endpoints until it is ready again.
A remote repository is a version of your project that is hosted on a server, allowing multiple users to collaborate. You connect to a remote repository using Git commands like `git clone` to copy it to your local machine, or `git remote add <name> <url>` to link your local repository to the remote one.
A commit in Git is a snapshot of changes made to the files in a repository. It contains the modified files, a unique identifier (hash), the author's information, a timestamp, and a commit message describing the changes.
To initialize a new Git repository, use the command:
“`
git init
“`
To resolve merge conflicts in Git, follow these steps:
1. Identify the files with conflicts by running `git status`.
2. Open the conflicted files in a text editor. Look for conflict markers (`<<<<<<<`, `=======`, `>>>>>>>`).
3. Manually edit the file to resolve the conflicts by choosing which changes to keep or combining them.
4. After resolving, save the file.
5. Stage the resolved files using `git add <filename>`.
6. Complete the merge by committing the changes with `git commit`.
Merge combines two branches by creating a new commit that includes changes from both, preserving the history of both branches. Rebase, on the other hand, moves or combines a sequence of commits to a new base commit, creating a linear history without a merge commit.