# Khuyến nghị Cấu hình Node của Cluster

## 1. Khuyến nghị Cấu hình Master

Thông số kỹ thuật của Master liên quan đến quy mô của cluster. Quy mô của cluster càng lớn, yêu cầu về thông số kỹ thuật của Master càng cao. Cấu hình node Master được khuyến nghị cho các quy mô cluster khác nhau như sau:

|     Quy mô Node     |  Thông số kỹ thuật Master  |
| :----------: | :--------: |
|   1-10 node   |  >=2 cores 4G  |
|  10-100 node  |  >=4 cores 8G  |
| 100-250 node  | >=8 cores 16G  |
| 250-500 node  | >=16 cores 32G |
| 500-1000 node | >=32 cores 64G |
|  Trên 1000 node  |    Liên hệ với chúng tôi    |

Kích thước mặc định của đĩa hệ thống node Master K8S là 40G (tối thiểu), được sử dụng để lưu trữ thông tin ETCD và các tệp cấu hình liên quan.

Nếu quy mô cluster được nâng lên và có nhu cầu nâng cấp cấu hình node Master, vui lòng thay đổi cấu hình từng cái một trên trang quản lý node của máy chủ đám mây. **Mỗi node cần được nâng cấp lên cùng một cấu hình**.

Trước khi nâng cấp lên node Master tiếp theo, **hãy đảm bảo hai node Master còn lại đang ở trạng thái Ready** và trạng thái của tất cả các thành phần cốt lõi liên quan đến Kubernetes trên node Master đang ở trạng thái **active**. Để biết các phương pháp xử lý sự cố của các thành phần cốt lõi của node Master, vui lòng tham khảo: [Xử lý lỗi thường gặp của Node](/docs/uk8s/node/node_debug_summary)

## 2. Cách chọn Kích thước Cấu hình Node

Cluster K8S yêu cầu cấu hình Node không thấp hơn 2C4G và đĩa hệ thống mặc định là 40G (tối thiểu), được sử dụng để lưu trữ các tệp cấu hình liên quan, v.v.

### **Về Chiến lược Bảo lưu Tài nguyên Node**

Trước khi xác định cấu hình của các node Node K8S, bạn cần biết rằng Node K8S bảo lưu mặc định **1GB bộ nhớ** và **0.2 CPU cores** để đảm bảo hệ thống hoạt động ổn định. Các tài nguyên được bảo lưu này được sử dụng cho hệ thống và các tiến trình dịch vụ liên quan đến Kubernetes.

Khi bộ nhớ khả dụng ít hơn 5%, quá trình trục xuất (eviction) sẽ bắt đầu dựa trên mức độ ưu tiên tài nguyên của các pod. Bộ nhớ thực tế khả dụng cho các pod xấp xỉ khoảng {Memory of Node} - 1GB - 5% (ví dụ: với 4GB bộ nhớ, bộ nhớ khả dụng là khoảng 2.8GB). Đồng thời, số lượng pod có thể được tạo trên một node duy nhất liên quan đến số lượng CPU cores của Node. Số lượng Pod = CPU cores × 8 (ví dụ: 2 cores hỗ trợ tối đa 16 pod, và 4 cores hỗ trợ tối đa 32 pod).

Do đó, chúng tôi khuyến nghị cấu hình Node là ≥ 2C4G, đây là cấu hình cơ bản để đảm bảo hoạt động bình thường của cluster.

Đối với tài nguyên lưu trữ, đĩa hệ thống của node Node K8S. Khi tạo một node, bạn có thể chọn gắn thêm đĩa dữ liệu (cũng có thể được gắn ở phía máy chủ sau khi node được tạo). Nếu node được gắn đĩa dữ liệu, nó sẽ được Docker sử dụng để lưu trữ các image cục bộ; nếu không, các image cục bộ sẽ được lưu trữ trong đĩa hệ thống. Vui lòng đảm bảo rằng đĩa có đủ không gian để tránh việc tự động dọn dẹp các image hoặc pod do thiếu không gian gây ra.

### **Khuyến nghị cho các Tùy chọn Cấu hình Node trong Môi trường Production**

Các tùy chọn cấu hình cho các Node trong môi trường production nên được xem xét một cách toàn diện dựa trên tổng số CPU cores được sử dụng hàng ngày bởi toàn bộ cluster, khả năng chịu lỗi (fault tolerance) và các loại hình nghiệp vụ. Chi tiết như sau:

Giả sử tổng số CPU cores trong cluster được đặt thành 240 (được xác định dựa trên dữ liệu vận hành lịch sử) và có thể chịu lỗi 10%, bạn có thể chọn 10 Host với 24 cores mỗi host, và tải hoạt động cao điểm không được vượt quá 240 × 90% = 216 cores. Nếu khả năng chịu lỗi thấp hơn 5%, có thể chọn 15 Host với 16 cores mỗi host, để ngay cả khi một node bị lỗi, các node còn lại vẫn có thể hỗ trợ hoạt động bình thường của các dịch vụ hiện có (với các khối lượng công việc được tự động di chuyển).

Dưới góc độ cung cấp khả năng chịu lỗi, cấu hình node càng thấp thì sẽ càng có nhiều node và tính khả dụng tương ứng sẽ tăng lên. Tuy nhiên, có hai nhược điểm khác: thứ nhất, cần phải bảo lưu quá nhiều tài nguyên cho K8S, gây lãng phí; thứ hai, nó không có lợi cho việc lập lịch container, và thậm chí có thể dẫn đến việc một số container không đăng ký được. Một ví dụ cực đoan: 3 node với 8 cores mỗi node có thể tạo ra 6 Pod yêu cầu bảo lưu 4 cores, trong khi 12 node với 2 cores mỗi node không thể đáp ứng yêu cầu Pod yêu cầu bảo lưu 4 cores.

Cân nhắc cả hai yếu tố sử dụng tài nguyên hiệu quả và khả năng chịu lỗi, không tính đến việc triển khai kết hợp (hybrid deployment) nghiệp vụ và quy mô tổng thể của nghiệp vụ, chúng tôi khuyến nghị CPU của các node Node trong môi trường production nên nằm trong khoảng từ 4 cores đến 32 cores.

Về tỷ lệ CPU: Bộ nhớ, chúng tôi khuyến nghị bạn nên đăng ký các loại máy phù hợp tùy theo loại ứng dụng của riêng mình. Ví dụ, các dịch vụ chuyên sâu về CPU có thể đăng ký các loại máy có tỷ lệ 1:2, các ứng dụng dựa trên Java có thể đăng ký các loại máy có tỷ lệ 1:4 hoặc 1:8. Nếu các dịch vụ khác nhau được triển khai kết hợp, tốt nhất bạn nên gắn nhãn cho các Node và sử dụng nodeAffinity (độ thân thiết của node) để lập lịch cho các Pod một cách hợp lý.