# Thêm Node

Giới hạn trên của Node cho một cụm đơn lẻ là 5.000, và có thể thêm tối đa 50 Node cùng một lúc trên trang bảng điều khiển. Trên trang chi tiết cụm và trang danh sách node, nhấp vào "**Thêm Node**".

Ngoài ra, hãy truy cập trang **Nhóm Node** (Node Pool), chọn một nhóm node và nhấp vào nút "**Thêm Node**" để thêm node vào nhóm node.

| Mục Cấu hình | Mô tả |
| ------------------ | -------------------------------------------------------------------------------------------------------------------- |
| Subnet             | Thiết lập subnet nơi chứa node ban đầu và Pod. Các node trong cụm có thể nằm trong các subnet khác nhau dưới cùng một VPC. |
| Type               | Loại node, hỗ trợ máy chủ đám mây Host (bao gồm cả máy chủ đám mây GPU). |
| Availability Zone  | Vùng khả dụng (Availability Zone) của Master/Node. Ở các khu vực có nhiều vùng khả dụng, bạn có thể chọn cụm K8S đa vùng khả dụng. Khuyến nghị nên phân bổ các node Master trên nhiều vùng khả dụng khi tạo cụm. |
| Node Image         | Thiết lập image Host của node trong cụm. Bạn có thể chọn một image tùy chỉnh, nhưng nó phải được tạo dựa trên image chuẩn của K8S. Để biết chi tiết, vui lòng tham khảo [Create Custom Image](/docs/uk8s/node/custom_image) <br> Nếu bạn muốn sử dụng node GPU, vui lòng tham khảo [Image Description in GPU Node](/docs/uk8s/GPU/gpu-node). Có thể chọn image cho máy CPU từ các image: `Centos 7.6`, `Ubuntu 20.04`, `Anolis 8.6`. |
| Node Specifications | Bao gồm loại máy, nền tảng CPU, CPU, bộ nhớ, loại đĩa hệ thống, loại đĩa dữ liệu, kích thước đĩa dữ liệu, v.v. Cấu hình của các loại mô hình khác nhau được trình bày chi tiết trong tài liệu sản phẩm đám mây tương ứng |
| Hardware Isolation Group   | Các node Master theo mặc định nằm trong cùng một nhóm cô lập phần cứng (Hardware Isolation Group), và nhóm cô lập phần cứng có thể đảm bảo nghiêm ngặt rằng mỗi máy chủ đám mây trong nhóm sẽ nằm trên các máy vật lý khác nhau. Mỗi nhóm cô lập có thể thêm tối đa 7 máy chủ đám mây trong một vùng khả dụng duy nhất. Chi tiết xem [Hardware Isolation Group](/docs/uhost/guide/isolationgroup) |
| Maximum Pod Count  | Số lượng Pod tối đa mà một Node duy nhất có thể hỗ trợ |
| Label              | Nhãn (Label) của node. Xem tài liệu chính thức của Kubernetes: [Labels and Selectors](https://kubernetes.io/zh/docs/concepts/overview/working-with-objects/labels/) |
| Taint              | Taint của node. Xem tài liệu chính thức của Kubernetes: [Taints and Tolerations](https://kubernetes.io/zh/docs/concepts/scheduling-eviction/taint-and-toleration/) |
| Disable Nodes      | Bật tùy chọn "Vô hiệu hóa Node (cordon node)" sẽ thêm node vào cụm dưới dạng node không thể lập lịch (unschedulable), có thể bật tùy chọn này khi cần thiết. |
| Custom Data        | Đề cập đến tập lệnh cấu hình (script) mà hệ thống tự động chạy khi máy chủ khởi động lần đầu tiên hoặc mỗi lần khởi động. Tập lệnh này có thể được truyền vào máy chủ siêu dữ liệu (metadata server) thông qua API bảng điều khiển và các phương tiện khác, và được chương trình cloud-init bên trong máy chủ lấy về. Tập lệnh tuân theo cú pháp CloudInit tiêu chuẩn. Tập lệnh này sẽ chặn tập lệnh cài đặt K8S, tức là việc cài đặt các thành phần liên quan đến K8S như Kubelet, Scheduler, v.v. sẽ chỉ bắt đầu sau khi tập lệnh này được thực thi xong. |
| Initial Script     | Tập lệnh này chỉ thực thi một lần duy nhất sau khi K8S khởi động, và chạy sau khi các thành phần liên quan đến K8S được cài đặt thành công. Tuân theo cú pháp shell tiêu chuẩn, kết quả thực thi được lưu trữ trong thư mục /var/log/message/. |

## Thao tác trên Node

Sau khi thêm node, bạn có thể xem danh sách node trên trang danh sách node của trang cụm. Bạn cũng có thể thực hiện các thao tác như "Vô hiệu hóa", "Xóa", "Chi tiết", "Liên kết EIP" và "Sửa đổi Tường lửa bên ngoài" trên các node.

### Vô hiệu hóa

Vô hiệu hóa một node sẽ thực thi lệnh `kubectl cordon node`, làm cho node đó không thể lập lịch (Unschedulable) mà không trục xuất các Pod hiện có trên node.

### Xóa

Khi xóa một node, bạn có thể tích chọn tùy chọn để đồng thời xóa tài nguyên máy chủ đám mây và các đĩa dữ liệu trên máy chủ đám mây đó. Nếu không tích chọn, node sẽ chỉ bị xóa khỏi cụm.

Khuyến nghị: Trục xuất (Evict) các dịch vụ khỏi node trước khi xóa để đảm bảo tính khả dụng của dịch vụ.

## Nhãn Node

Bạn có thể thêm, sửa đổi hoặc xóa nhãn cho các node Worker thông qua nút Thay đổi Nhãn trên trang danh sách node. Nhãn node là các cặp key-value trong Kubernetes được sử dụng để xác định các đặc điểm của node, áp dụng cho các chính sách lập lịch Pod.

### Yêu cầu về Định dạng Nhãn

- Được biểu diễn dưới dạng cặp key-value (key=value).
- Mỗi thao tác hỗ trợ sửa đổi tối đa **20** cặp nhãn.
- Các hạn chế đối với key của nhãn:
> - Tránh sử dụng tiền tố kubernetes.io hoặc k8s.io, vì những tiền tố này được dành riêng cho các nhãn hệ thống của Kubernetes.
> - Việc sử dụng các tiền tố dành riêng cho hệ thống có thể gây ra bất thường trong lập lịch hoặc xung đột với các nhãn hệ thống.
> - Không sửa đổi các nhãn được hệ thống thêm theo mặc định, vì việc sửa đổi có thể dẫn đến các sự cố dịch vụ hệ thống.
- Cả key và value đều phải tuân thủ các quy ước đặt tên tiêu chuẩn của Kubernetes.

### Các bước thực hiện

1. Trong danh sách node, chọn Thao tác khác cho node mục tiêu.
2. Nhấp vào Thay đổi Nhãn.
3. Thêm hoặc sửa đổi nhãn trong hộp thoại bật lên.
4. Nhấp vào OK để hoàn tất sửa đổi.

## Taint của Node

Bạn có thể thêm, sửa đổi hoặc xóa taint cho các node Worker thông qua nút Thay đổi Taint trên trang danh sách node. Taint của node kiểm soát những Pod nào có thể được lập lịch lên một node và phải được sử dụng kết hợp với dung thứ của Pod (Pod tolerations).

### Yêu cầu về Định dạng Taint

- Được biểu diễn dưới dạng key=value:effect.
- Mỗi thao tác hỗ trợ cập nhật tối đa **10** cặp taint.
- effect phải là một trong ba loại sau:
> - NoSchedule: Ngăn các Pod mới được lập lịch vào node (các Pod hiện có không bị ảnh hưởng).
> - PreferNoSchedule: Không khuyến khích, nhưng không ngăn cấm hoàn toàn, việc lập lịch các Pod mới vào node.
> - NoExecute: Ngăn các Pod mới được lập lịch và trục xuất các Pod hiện có không dung thứ với taint.

### Các bước thực hiện

1. Trong danh sách node, chọn Thao tác khác cho node mục tiêu.
2. Nhấp vào Thay đổi Taint.
3. Thêm hoặc sửa đổi taint trong hộp thoại bật lên.
4. Nhấp vào OK để hoàn tất sửa đổi.