Kubernetes là gì?
Kubernetes (K8s) là một platform mã nguồn mở để tự động hóa việc triển khai, mở rộng và quản lý các ứng dụng containerized. Được phát triển bởi Google và hiện được quản lý bởi Cloud Native Computing Foundation (CNCF).
Các khái niệm cơ bản
- Pod: Đơn vị nhỏ nhất trong K8s, chứa một hoặc nhiều container
- Node: Máy vật lý hoặc ảo chạy các Pod
- Cluster: Tập hợp các Node
- Deployment: Quản lý việc tạo và update Pod
- Service: Expose Pod ra ngoài và load balancing
- Namespace: Phân chia tài nguyên trong cluster
Cài đặt Kubernetes
# Cài đặt kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
# Cài đặt Minikube (cho môi trường local)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# Khởi động Minikube
minikube start
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.24
ports:
- containerPort: 80
Service YAML
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: LoadBalancer
selector:
app: nginx
ports:
- port: 80
targetPort: 80
Các lệnh kubectl cơ bản
# Deploy ứng dụng
kubectl apply -f deployment.yaml
# Xem pods
kubectl get pods
# Xem services
kubectl get services
# Xem logs
kubectl logs <pod-name>
# Scale deployment
kubectl scale deployment nginx-deployment --replicas=5
# Delete deployment
kubectl delete deployment nginx-deployment
Tại sao nên sử dụng Kubernetes?
- Auto-scaling: Tự động scale ứng dụng dựa trên load
- Self-healing: Tự động restart container bị lỗi
- Load balancing: Phân phối traffic đều giữa các Pod
- Rolling updates: Update ứng dụng không downtime
- Secret management: Quản lý thông tin nhạy cảm
- Service discovery: Tự động phát hiện và kết nối service
Kết luận
Kubernetes là công cụ không thể thiếu khi bạn cần quản lý container ở quy mô lớn. Mặc dù có độ phức tạp nhất định, nhưng những lợi ích mà nó mang lại là rất đáng giá cho các hệ thống production.