Node Affinity trong kubernetes

Trong bài viết này, hãy cùng mình tìm hiểu về Node Affinity, một tính năng trong Kubernetes cho phép bạn kiểm soát vị trí của các Pod trên các Node.

Xem thêm:

Manual Scheduling trong K8s

Labels and Selectors trong Kubernetes

1. Node Affinity là gì?

Node Affinity là một tính năng cho phép bạn đặt giới hạn cho việc đặt Pod trong kubernetes trên các Node cụ thể, cung cấp thêm khả năng so với Node Selectors.

2. Cách Node Affinity hoạt động

Node Affinity được định nghĩa trong phần spec.affinity.nodeAffinity của một Pod. Nó sử dụng các điều khoản (nodeSelectorTerms) để chỉ định các yêu cầu về label của Node mà Pod muốn được đặt trên đó.

Mỗi điều khoản bao gồm các cặp key, operator, và value để so sánh với các label của Node.

Các operator phổ biến:

  • in: Pod sẽ được đặt trên Node có label key với giá trị nằm trong danh sách value.
  • notin: Pod sẽ được đặt trên Node có label key với giá trị không nằm trong danh sách value.
  • exists: Pod sẽ được đặt trên Node có label key tồn tại, bất kể giá trị là gì.

3. Các loại Node Affinity

requiredDuringScheduling, ignoredDuringExecution: Yêu cầu Node phải thỏa mãn điều kiện trong quá trình scheduling, nhưng không ảnh hưởng đến Pod sau khi được scheduling. Nếu không tìm thấy Node phù hợp, Pod sẽ không được scheduling.

preferredDuringScheduling, ignoredDuringExecution: Ưu tiên Node thỏa mãn điều kiện trong quá trình scheduling, nhưng không ảnh hưởng đến Pod sau khi được scheduling. Nếu không tìm thấy Node phù hợp, Pod sẽ được đặt trên Node bất kỳ.

requiredDuringScheduling, requiredDuringExecution: Yêu cầu Node phải thỏa mãn điều kiện trong cả quá trình scheduling và execution. Nếu Node không còn phù hợp (ví dụ: bị xóa label), Pod sẽ bị evicted.

4. Sự khác biệt giữa Node Affinity và Node Selectors

Node Selectors chỉ cho phép bạn sử dụng các phép so sánh đơn giản như key=value.

Node Affinity cung cấp các phép so sánh phức tạp hơn, chẳng hạn như in, notin, exists, và cho phép bạn kết hợp nhiều điều kiện.

5. Lưu ý

Node Affinity chỉ là một phần của hệ thống scheduling, nó có thể bị ảnh hưởng bởi các yếu tố khác như Taints và Tolerations.

Việc sử dụng Node Affinity có thể làm phức tạp việc quản lý Cluster. Bạn cần cân nhắc kỹ các lợi ích và nhược điểm trước khi sử dụng tính năng này.

Hy vọng bài viết này đã giúp bạn đã có thêm kiến thức về Node Affinity. Cảm ơn bạn đã tham khảo kubernetes cơ bản trên ttnguyen.net.

Bài viết liên quan:

ClusterIP, NodePort, Loadbalance – Các loại service K8S

Imperative và Declarative trong K8S

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em