0
0
Lập trình
NM

Node Pools & Node Selectors trong Google Kubernetes Engine

Đăng vào 2 tháng trước

• 4 phút đọc

Giới thiệu

Khi làm việc với Google Kubernetes Engine (GKE), bạn sẽ gặp hai khái niệm mạnh mẽ: Node PoolsNode Selectors. Những công cụ này giúp bạn kiểm soát cách mà các workload chạy trên các nút trong cluster Kubernetes của bạn. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về hai khái niệm này và cách áp dụng chúng trong các dự án thực tế.

Mục lục

  1. Node Pools trong GKE
  2. Tại sao Node Pools lại hữu ích?
  3. Node Selectors trong Kubernetes
  4. Thực hành tốt nhất
  5. Những cạm bẫy thường gặp
  6. Mẹo tối ưu hiệu suất
  7. Giải quyết sự cố
  8. Câu hỏi thường gặp

Node Pools trong GKE

Định nghĩa

Node Pool là một nhóm các nút trong một cluster GKE với cùng một cấu hình. Khi bạn tạo một cluster, GKE sẽ tự động tạo một node pool mặc định. Bạn có thể thêm nhiều node pools với cấu hình khác nhau tùy thuộc vào nhu cầu của workload.

Cách hoạt động

Mỗi nút trong một node pool được gán nhãn như sau:

Copy
cloud.google.com/gke-nodepool: default-pool
cloud.google.com/gke-nodepool: linuxapps-pool

GKE tự động gán nhãn cho các nút dựa trên tên của pool.

Tại sao Node Pools lại hữu ích?

Bạn có thể phân loại workload bằng cách tạo các node pools với cấu hình cụ thể. Ví dụ:

  • 🖴 Node pool với SSD cục bộ cho các ứng dụng yêu cầu I/O cao.
  • ⚡ Node pool với nền tảng CPU tối thiểu để tinh chỉnh hiệu suất.
  • 💰 Node pool với Spot VMs để tiết kiệm chi phí.
  • 🖥️ Node pool với loại máy cụ thể (ví dụ: e2-standard-4).
  • 🖼️ Node pool với hình ảnh nút cụ thể (ví dụ: Container-Optimized OS so với Ubuntu).

Tính linh hoạt

  • 👉 Bạn có thể thay đổi kích thước node pools bằng cách thêm hoặc xóa các nút.
  • 👉 Bạn có thể kích hoạt Cluster Autoscaler để node pools tự động mở rộng hoặc thu hẹp dựa trên mức sử dụng.

⚠️ Lưu ý quan trọng: Bạn không thể thay đổi cấu hình của một nút đơn lẻ trong một node pool. Bất kỳ thay đổi nào cũng sẽ áp dụng cho toàn bộ pool.

Node Selectors trong Kubernetes

Định nghĩa

Node Selector là một cách đơn giản để chỉ định cho Kubernetes biết Pod của bạn nên chạy ở đâu. Nó là một phần của thông số Pod và hoạt động với các nhãn dạng key-value.

Ví dụ sử dụng

Nếu bạn muốn một Pod chạy chỉ trong node pool linuxapps-pool, bạn có thể sử dụng cấu hình sau:

Copy
apiVersion: v1
kind: Pod
metadata:
  name: my-linux-app
spec:
  nodeSelector:
    cloud.google.com/gke-nodepool: linuxapps-pool
  containers:
    - name: my-container
      image: nginx

Cách thức hoạt động

Khi cấu hình trên được áp dụng:

  • Kubernetes sẽ xem xét các nút trong cluster của bạn.
  • Nó tìm các nút có nhãn cloud.google.com/gke-nodepool=linuxapps-pool.
  • Kubernetes sẽ lên lịch cho Pod của bạn chạy trên nút đó. ✅

Thực hành tốt nhất

  • Tạo Node Pools theo nhu cầu: Hãy tạo các node pools phù hợp với từng loại workload để tối ưu hóa hiệu suất và chi phí.
  • Sử dụng Node Selectors: Dùng Node Selectors để kiểm soát nơi mà Pod của bạn sẽ chạy, đảm bảo rằng chúng luôn chạy trên các nút phù hợp.

Những cạm bẫy thường gặp

  • Không thay đổi cấu hình của một nút đơn lẻ: Như đã đề cập, mọi thay đổi đều ảnh hưởng đến toàn bộ pool, vì vậy hãy lập kế hoạch cẩn thận trước khi thực hiện thay đổi.
  • Quản lý chi phí: Hãy theo dõi chi phí khi sử dụng các node pools khác nhau, đặc biệt là khi sử dụng Spot VMs.

Mẹo tối ưu hiệu suất

  • Sử dụng Cluster Autoscaler: Kích hoạt tính năng này để tự động điều chỉnh số lượng nút trong node pools theo nhu cầu sử dụng, giúp tiết kiệm chi phí.
  • Tối ưu hóa loại máy: Chọn loại máy phù hợp với workload của bạn để đạt được hiệu suất tối ưu.

Giải quyết sự cố

  • Pod không khởi động: Kiểm tra các nhãn của nút và đảm bảo rằng Node Selector được cấu hình chính xác.
  • Hiệu suất kém: Đảm bảo rằng node pool của bạn có đủ tài nguyên và không bị quá tải.

Câu hỏi thường gặp

Node Pool có thể chứa bao nhiêu nút?

Node Pool có thể chứa tối đa 5000 nút, nhưng điều này có thể thay đổi tùy theo giới hạn của GKE.

Làm thế nào để xóa một Node Pool?

Bạn có thể sử dụng lệnh gcloud:

Copy
gcloud container node-pools delete [NODE_POOL_NAME] --cluster [CLUSTER_NAME] --zone [COMPUTE_ZONE]

Có thể thay đổi nhãn của Node Pool không?

Có, bạn có thể thay đổi nhãn của Node Pool, nhưng cần lưu ý rằng việc này sẽ ảnh hưởng đến tất cả các nút trong pool.


Kết luận

Hy vọng bài viết này đã giúp bạn hiểu rõ hơn về Node PoolsNode Selectors trong Google Kubernetes Engine. Những công cụ này không chỉ giúp bạn quản lý workload hiệu quả mà còn tối ưu hóa chi phí. Hãy áp dụng những kiến thức này vào dự án của bạn để đạt được hiệu suất tối ưu.

Nếu bạn thấy bài viết hữu ích, hãy để lại một like ❤️ và chia sẻ để tôi có thể tiếp tục cung cấp thêm nhiều nội dung giá trị hơn nữa!


— Latchu | Kỹ sư DevOps & Cloud

☁️ AWS | GCP | ☸️ Kubernetes | 🔐 Bảo mật | ⚡ Tự động hóa
📌 Chia sẻ hướng dẫn thực hành, các thực hành 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