0
0
Lập trình
TT

🚀Expose Pod với Load Balancer trên Google Kubernetes Engine

Đăng vào 1 tuần trước

• 3 phút đọc

Hướng Dẫn Expose Pod với Google Kubernetes Engine Load Balancer

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách expose một Pod trong Google Kubernetes Engine (GKE) bằng cách sử dụng dịch vụ LoadBalancer của Kubernetes. Điều này sẽ giúp ứng dụng của bạn có thể truy cập từ bên ngoài (từ internet) với địa chỉ IP công cộng được cung cấp bởi GCP.

Mục Lục

  1. Bước 1: Expose một Pod với Service
  2. Bước 2: Xác minh các tính năng bổ sung trong GKE
  3. Bước 3: Tương tác với một Pod
  4. Bước 4: Lấy đầu ra YAML của Pod và Service
  5. Bước 5: Dọn Dẹp
  6. Tổng Kết

🔹 Bước 1: Expose một Pod với Service

Trước tiên, chúng ta sẽ tạo một Pod và sau đó expose nó với một dịch vụ LoadBalancer.

👉 Tạo một Pod

bash Copy
# Mẫu
kubectl run <tên-pod-mong-muốn> --image <Hình-ảnh-Container>

# Ví dụ
kubectl run my-first-pod --image ghcr.io/stacksimplify/kubenginx:1.0.0

👉 Expose Pod như một Service

bash Copy
# Mẫu
kubectl expose pod <Tên-Pod> --type=LoadBalancer --port=80 --name=<Tên-Dịch-vụ>

# Ví dụ
kubectl expose pod my-first-pod --type=LoadBalancer --port=80 --name=my-first-service

👉 Lấy thông tin Service

bash Copy
kubectl get service
kubectl get svc

Quan sát:

  1. Ban đầu, trường EXTERNAL-IP sẽ hiển thị là pending.
  2. Sau 2–3 phút, GCP sẽ cung cấp một Cloud Load Balancer và gán một địa chỉ IP ngoài.
  3. Khi có sẵn, dịch vụ của bạn sẽ có thể truy cập tại IP đó.

👉 Mô tả Service

bash Copy
kubectl describe service my-first-service

👉 Truy cập ứng dụng

bash Copy
http://<External-IP-từ-lệnh-get-service>
curl http://<External-IP-từ-lệnh-get-service>

🔹 Bước 2: Xác minh các tính năng bổ sung trong GKE

Sau khi dịch vụ LoadBalancer được tạo, bạn cũng có thể xác minh sự hiện diện của nó trong GCP Console.

👉 Tab Workloads

  • Truy cập Kubernetes Engine → Clusters → standard-public-cluster-1 → Workloads

👉 Tab Services & Ingress

  • Truy cập Kubernetes Engine → Clusters → standard-public-cluster-1 → Networking → Gateway, Services & Ingress

👉 Cloud Load Balancer

  • Truy cập Network Services → Load Balancing
  • Xác minh:
    1. Backends (các Pod của bạn được đăng ký phía sau dịch vụ)
    2. Frontends (địa chỉ IP công cộng được tạo)

🔹 Bước 3: Tương tác với một Pod

Bây giờ Pod của bạn đang chạy, hãy tương tác với nó trực tiếp.

👉 Xác minh nhật ký Pod

bash Copy
# Lấy tên Pod
kubectl get po

# Xuất nhật ký Pod
kubectl logs <tên-pod>
kubectl logs my-first-pod

# Phát trực tiếp nhật ký trong khi truy cập ứng dụng
kubectl logs -f my-first-pod

👉 Kết nối với Container

bash Copy
# Mở một shell tương tác bên trong container
kubectl exec -it <tên-pod> -- /bin/bash
kubectl exec -it my-first-pod -- /bin/bash

# Chạy một số lệnh bên trong container
ls
cd /usr/share/nginx/html
cat index.html
exit

👉 Chạy các lệnh riêng lẻ

bash Copy
# Mẫu
kubectl exec -it <tên-pod> -- <LỆNH>

# Ví dụ
kubectl exec -it my-first-pod -- env
kubectl exec -it my-first-pod -- ls
kubectl exec -it my-first-pod -- cat /usr/share/nginx/html/index.html

🔹 Bước 4: Lấy đầu ra YAML của Pod và Service

Bạn có thể kiểm tra các định nghĩa YAML của các tài nguyên của bạn.

bash Copy
# Lấy định nghĩa Pod
kubectl get pod my-first-pod -o yaml

# Lấy định nghĩa Service
kubectl get service my-first-service -o yaml

🔹 Bước 5: Dọn Dẹp

Khi bạn đã hoàn tất thử nghiệm, hãy dọn dẹp các tài nguyên.

bash Copy
# Liệt kê tất cả các đối tượng trong không gian tên mặc định
kubectl get all

# Xóa Service
kubectl delete svc my-first-service

# Xóa Pod
kubectl delete pod my-first-pod

# Xác minh dọn dẹp
kubectl get all

✅ Tổng Kết

Trong hướng dẫn này, chúng ta đã:

  • Tạo một Pod trong GKE
  • Expose nó bằng dịch vụ Kubernetes LoadBalancer
  • Xác minh địa chỉ IP công cộng và truy cập ứng dụng
  • Khám phá nhật ký và thực hiện các lệnh bên trong Pod
  • Dọn dẹp các tài nguyên

Với thiết lập này, bạn có thể làm cho các ứng dụng của mình có thể truy cập công khai trên Google Cloud thông qua dịch vụ LoadBalancer của Kubernetes.

🌟 Cảm ơn bạn đã đọc! Nếu bài viết này hữu ích, hãy thích ❤️, theo dõi hoặc chia sẻ để khuyến khích tôi tiếp tục tạo thêm nội dung.

— Latchu | Kỹ sư DevOps & Cloud cao cấp

☁️ AWS | GCP | ☸️ Kubernetes | 🔐 An ninh | ⚡ Tự động hóa
📌 Chia sẻ hướng dẫn thực tế, các phương pháp tốt nhất & giải pháp đám mây thực tế.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào