Kubernetes Tutorial
Kubernetes, often referred to as "K8s," is an open-source container orchestration platform for automating the deployment, scaling, and management of containerized applications. This tutorial provides a basic guide to Kubernetes concepts, components, and common commands.
1. Key Concepts in Kubernetes
Cluster
A Kubernetes cluster is a set of nodes where containerized applications run. It includes:
- Master Node: Manages the cluster, schedules workloads, and handles API requests.
- Worker Nodes: Nodes where the application containers run.
Pods
A pod is the smallest deployable unit in Kubernetes, usually running one or more containers.
Services
A service exposes an application running on a set of pods to external or internal traffic.
Deployments
A deployment manages a set of identical pods to ensure they stay running and updated.
2. Setting Up Kubernetes
To start using Kubernetes, you need access to a Kubernetes cluster.
Local Setup with Minikube
-
Install Minikube: Follow the installation guide at Minikube.
-
Start Minikube:
minikube start -
Verify Installation:
kubectl get nodes
This command should show a list of nodes, with Minikube as the single node.
3. Basic Kubernetes Commands
kubectl
The kubectl command-line tool is used to manage Kubernetes clusters.
Common Commands
-
Get Nodes: List all nodes in the cluster.
kubectl get nodes -
Get Pods: List all pods in the default namespace.
kubectl get pods -
Get Services: List all services.
kubectl get services
4. Creating a Deployment
A deployment describes an application to be deployed, including its container image and desired state.
Example Deployment YAML
Save the following YAML as nginx-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Apply the Deployment
kubectl apply -f nginx-deployment.yaml
View the Deployment
kubectl get deployments
5. Exposing a Service
To expose your deployment, create a service that routes traffic to the pods.
Example Service YAML
Save the following YAML as nginx-service.yaml:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
Apply the Service
kubectl apply -f nginx-service.yaml
Get Service Details
kubectl get services
6. Scaling a Deployment
To scale the number of replicas in a deployment:
kubectl scale deployment nginx-deployment --replicas=5
Verify the scaling with:
kubectl get pods
7. Updating a Deployment
To update a deployment, edit the container image:
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.0
Check the rollout status:
kubectl rollout status deployment/nginx-deployment
8. Deleting Resources
To delete a resource:
-
Delete Deployment:
kubectl delete deployment nginx-deployment -
Delete Service:
kubectl delete service nginx-service
Summary
This tutorial covered the basics of Kubernetes:
- Setting up a cluster with Minikube.
- Creating, scaling, and updating deployments.
- Exposing applications with services.
Kubernetes simplifies managing containerized applications, allowing you to scale and orchestrate applications across clusters efficiently.
Content Review
The content in this repository has been reviewed by chevp. Chevp is dedicated to ensuring that the information provided is accurate, relevant, and up-to-date, helping users to learn and implement programming skills effectively.
About the Reviewer
For more insights and contributions, visit chevp's GitHub profile: chevp's GitHub Profile.