What is Kubernetes?

Kubernetes is an open-source container orchestration platform that automates the deployment, scaling, and management of containerized applications. Originally developed by Google, it is now maintained by the Cloud Native Computing Foundation (CNCF) and supported by a large community of contributors.

Kubernetes has become essential infrastructure for modern application deployment and management. As organizations move towards microservices and cloud-native architectures, understanding Kubernetes is crucial for developers and operations teams alike.

Understanding the Need

The shift towards containerization has solved many application packaging and dependency problems, but it introduced new challenges in managing containers at scale. When running hundreds or thousands of containers across multiple servers, teams need a way to automate deployment, networking, scaling, and failure handling.

Kubernetes addresses these challenges by providing a unified API and control plane to manage containerized workloads. It abstracts away the underlying infrastructure, allowing teams to focus on application deployment rather than infrastructure management.

What we will cover in this series

In this series, we’ll explore how to get started with Kubernetes, from setting up a local development environment to deploying applications in production. This first part covers setting up Kubernetes on your local machine for development and learning purposes.

We will be using Minikube and Docker Desktop with Kubernetes for local development. After setting up Kubernetes, we’ll explore core concepts by deploying a simple application. The application we will deploy is a simple todo list application that you can find in the Awesome Todo.

Local Development Options

For local development, we have two main options: Minikube and Docker Desktop with Kubernetes. Both are excellent choices for learning and development purposes. Let’s explore both setup methods. But at the end we will be using Minikube for the rest of the series.

Option 1: Minikube Setup

Minikube creates a single-node Kubernetes cluster on your local machine. It’s perfect for development and learning.

First, install Docker:

sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER

Install Minikube:

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

Install kubectl:

curl -LO "https://dl.k8s.io/release/v1.21.0/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

Verify the installation:

kubectl version

This should show the client and server versions of kubectl.

Start Minikube:

minikube start --driver=docker

Verify the installation:

kubectl version

Option 2: Docker Desktop Setup

If you’re using Windows or macOS, Docker Desktop provides a simple way to run Kubernetes:

  1. Download and install Docker Desktop
  2. Open Docker Desktop settings
  3. Navigate to the Kubernetes section
  4. Check “Enable Kubernetes”
  5. Click “Apply & Restart”

Verifying Your Setup

After installation, verify your cluster is running:

kubectl version --short

You can also use minikube and Docker Desktop together without enabling Kubernetes in Docker Desktop. In this case, Minikube will manage the Kubernetes cluster while Docker Desktop manages the container runtime.

Basic Usage Examples

Let’s verify everything works by running a test deployment:

# Create a test deployment
kubectl create deployment hello-kubernetes --image=k8s.gcr.io/echoserver:1.4

# Expose the deployment
kubectl expose deployment hello-kubernetes --type=NodePort --port=8080

# Get the URL
minikube service hello-kubernetes --url

This will create a simple deployment and expose it as a service. You can access the service using the provided URL. If everything works, you should see the output from the echoserver container.

Common Issues and Solutions

If you encounter issues, here are some common solutions:

For Minikube:

# Reset the cluster
minikube delete
minikube start --driver=docker

# Check logs
minikube logs

For Docker Desktop:

# Reset Kubernetes
1. Reset Kubernetes cluster in Docker Desktop settings
2. Reset Docker Desktop

Next Steps

Now that you have a working Kubernetes environment, in the next part of this series, we’ll explore:

  • Understanding Kubernetes core concepts
  • Deploying your first real application
  • Working with pods and services
  • Managing application configurations

This local setup provides a perfect environment for learning and experimenting with Kubernetes features before moving to production environments.

[Continue to Part 2: Kubernetes Core Concepts and Your First Deployment]