Hướng Dẫn Triển Khai Kubernetes theo Cách Khai Báo trên Google Kubernetes Engine (GCP)
Trong các hướng dẫn trước, chúng ta đã tạo các Deployments bằng cách tiếp cận mệnh lệnh. Giờ đây, hãy chuyển sang phương pháp khai báo bằng cách sử dụng các tệp YAML.
Tại sao chọn cách khai báo?
Cách khai báo là phương pháp sản xuất chuẩn, đảm bảo rằng các cấu hình được kiểm soát phiên bản, có thể tái sử dụng và nhất quán. Nó cho phép chúng ta quản lý trạng thái hệ thống một cách hiệu quả hơn.
📌 Bước 1: Sao Chép Mẫu từ ReplicaSet
Chúng ta sẽ bắt đầu bằng cách xóa các deployments/dịch vụ hiện có, sau đó tạo một Deployment và Service mới bằng cách sử dụng các định nghĩa YAML.
🔹 Xóa Deployment và Service Hiện Có
bash
kubectl get deployments
kubectl delete deployment my-first-deployment
kubectl get svc
kubectl delete svc my-first-deployment-service
🔹 Tạo Tệp Manifest cho Deployment
Chúng ta sẽ tạo một định nghĩa Deployment bằng cách sửa đổi mẫu ReplicaSet trước đó. Những thay đổi đã thực hiện:
kind: Deployment thay vì ReplicaSet- Phiên bản hình ảnh được cập nhật thành 3.0.0
- Tất cả các nhãn/selector đã được cập nhật thành myapp3
📄 01-deployment-definition.yml
yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp3-deployment
spec:
replicas: 3
selector:
matchLabels:
app: myapp3
template:
metadata:
name: myapp3-pod
labels:
app: myapp3
spec:
containers:
- name: myapp3-container
image: ghcr.io/stacksimplify/kubenginx:3.0.0
ports:
- containerPort: 80
🔹 Áp Dụng Deployment
bash
# Chuyển Đến Thư Mục
cd kube-manifests
# Áp Dụng Deployment
kubectl apply -f 01-deployment-definition.yml
# Kiểm Tra Deployment
kubectl get deploy
kubectl get rs
kubectl get po
🔹 Tạo LoadBalancer Service
Bây giờ, hãy mở rộng Deployment của chúng ta ra bên ngoài bằng cách sử dụng LoadBalancer Service.
📄 02-deployment-LoadBalancer-service.yml
yaml
apiVersion: v1
kind: Service
metadata:
name: deployment-loadbalancer-service
spec:
type: LoadBalancer
selector:
app: myapp3
ports:
- name: http
port: 80 # Cổng Dịch Vụ
targetPort: 80 # Cổng Container
🔹 Áp Dụng Service
bash
kubectl apply -f 02-deployment-LoadBalancer-service.yml
# Liệt Kê Các Dịch Vụ
kubectl get svc
# Lấy IP Công Cộng (do GCP LoadBalancer chỉ định)
kubectl get nodes -o wide
# Truy Cập Ứng Dụng
http://<Load-Balancer-Service-IP>
✅ Giờ đây, bạn sẽ thấy Phiên bản Ứng Dụng: 3.0.0 được phục vụ qua LoadBalancer GCP của bạn.
📌 Bước 2: Dọn Dẹp Deployment và Service Kubernetes
Khi đã hoàn tất thử nghiệm, hãy dọn dẹp các tài nguyên.
bash
# Xóa Deployment
kubectl delete -f 01-deployment-definition.yml
# Xóa LoadBalancer Service
kubectl delete -f 02-deployment-LoadBalancer-service.yml
✅ Tóm Tắt
Trong hướng dẫn này, chúng ta đã:
- Chuyển đổi mẫu ReplicaSet thành tệp manifest Deployment
- Mở rộng nó bằng cách sử dụng LoadBalancer Service trong GCP
- Xác minh ứng dụng đang chạy với 3 bản sao
- Dọn dẹp tài nguyên sau khi thử nghiệm
👉 Các tệp manifest khai báo là phương pháp tốt nhất cho Kubernetes vì chúng cho phép tái sử dụng, quy trình GitOps và sự hợp tác trong nhóm.
Các Thực Hành Tốt Nhất
- Sử dụng phiên bản hình ảnh cố định: Luôn chỉ định phiên bản hình ảnh cụ thể để tránh sự cố không mong muốn khi có cập nhật.
- Kiểm soát phiên bản tệp YAML: Sử dụng Git để theo dõi thay đổi tệp YAML của bạn.
- Tạo tài liệu cho các tệp khai báo: Cung cấp thông tin chi tiết về cách triển khai và cấu hình.
Những Cạm Bẫy Thường Gặp
- Thiếu kiểm soát phiên bản: Không theo dõi các thay đổi có thể dẫn đến sự cố khôi phục khó khăn.
- Không kiểm tra cẩn thận trước khi triển khai: Luôn kiểm tra cẩn thận các tệp YAML trước khi áp dụng để tránh lỗi.
Mẹo Hiệu Suất
- Tối ưu hóa số lượng bản sao: Đảm bảo rằng số lượng bản sao phù hợp với khối lượng công việc của bạn để tối ưu hóa chi phí.
- Giám sát tài nguyên: Sử dụng các công cụ giám sát để theo dõi hiệu suất ứng dụng và điều chỉnh khi cần.
Khắc Phục Sự Cố
- Nếu không thể truy cập ứng dụng: Kiểm tra cấu hình LoadBalancer và đảm bảo rằng nó đã được gán IP công cộng.
- Nếu Deployment không khởi động: Kiểm tra nhật ký pod để xác định lỗi.
🌟 Cảm ơn bạn đã đọc! Nếu bài viết này hữu ích, hãy để lại một lượt thích ❤️, theo dõi hoặc chia sẻ để tôi có động lực tạo thêm nhiều nội dung hơn nữa.
— Latchu | Kỹ Sư DevOps và Cloud Cấp Cao
☁️ AWS | GCP | ☸️ Kubernetes | 🔐 An Ninh | ⚡ Tự Động Hóa
📌 Chia sẻ hướng dẫn thực hành, các thực hành tốt nhất và giải pháp đám mây thực tế.