> For the complete documentation index, see [llms.txt](https://docs.verge.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.verge.io/automate-protect-and-extend/vi/tich-hop-va-api/kubernetes-integration.md).

# Tích hợp Kubernetes

## Tổng quan

VergeOS cung cấp tích hợp Kubernetes gốc thông qua một trình điều khiển lưu trữ CSI và một Cloud Controller Manager (CCM). Các thành phần này kết nối bất kỳ cụm Kubernetes nào chạy trên các VM VergeOS — dù được triển khai thông qua [Rancher](/automate-protect-and-extend/vi/tich-hop-va-api/rancher-integration.md), kubeadm, hoặc bất kỳ phương thức nào khác — với nền tảng VergeOS bên dưới.

| Thành phần                                                       | Mục đích                                                 |
| ---------------------------------------------------------------- | -------------------------------------------------------- |
| [Trình điều khiển CSI](#csi-driver)                              | Lưu trữ bền vững cho các pod Kubernetes qua VergeOS vSAN |
| [Trình quản lý bộ điều khiển đám mây](#cloud-controller-manager) | Vòng đời node và tích hợp bộ cân bằng tải                |

### Điều kiện tiên quyết

* Một cụm Kubernetes chạy trên các VM VergeOS (RKE2, K3s, kubeadm, v.v.)
* Một khóa API VergeOS (được tạo trong Cài đặt người dùng)
* `kubectl` và `helm` Các công cụ CLI
* Quyền truy cập vào kubeconfig của cụm

{% hint style="info" %}
**Chứng chỉ tự ký**

Nếu môi trường VergeOS dùng chứng chỉ tự ký, hãy đặt `vergeos.verifySSL=false` khi cài đặt các biểu đồ Helm của CSI driver và CCM. Đây là mặc định, nhưng đáng lưu ý nếu sau này chúng ta thay đổi nó.
{% endhint %}

***

## Trình điều khiển CSI

Trình điều khiển Container Storage Interface (CSI) cho phép các pod Kubernetes yêu cầu và gắn kết bộ nhớ VergeOS dưới dạng các persistent volume. Nó chuyển các thao tác lưu trữ trực tiếp đến API VergeOS, sử dụng vSAN đúng với mục đích nó được tạo ra — khử trùng lặp, đặt theo nhiều tầng và dự phòng phân tán.

### Các backend lưu trữ

Trình điều khiển CSI hỗ trợ hai backend, cả hai đều do một tệp nhị phân Go duy nhất phục vụ:

| Backend  | Chế độ truy cập | Mô tả                                                               |
| -------- | --------------- | ------------------------------------------------------------------- |
| **NAS**  | ReadWriteMany   | Các volume EXT4 trên các dịch vụ VergeOS NAS, được cung cấp qua NFS |
| **Khối** | ReadWriteOnce   | Các ổ đĩa VM được hotplug vào các VM VergeOS qua vSAN               |

{% hint style="info" %}
**Tại sao không dùng Longhorn?**

Longhorn chạy công cụ lưu trữ sao chép riêng của nó *bên trong* Kubernetes, thêm lớp sao chép, snapshot và lập lịch lên trên hypervisor. Trên VergeOS, trình điều khiển CSI gốc phù hợp hơn:

* **Không sao chép hai lần** — kiến trúc phản chiếu phân tán của vSAN đã cung cấp sẵn tính dự phòng dữ liệu
* **Khử trùng lặp nội tuyến** — khử trùng lặp của vSAN là toàn cục trên toàn cụm; các volume Longhorn là các blob mờ không thể tham gia
* **Phân bố đa tầng** — các volume sẽ nằm trên tầng vSAN phù hợp (NVMe, SSD, HDD) dựa trên StorageClass
* **Quản lý hợp nhất** — các volume xuất hiện trong giao diện VergeOS cùng với VM, snapshot và các chia sẻ NAS
  {% endhint %}

### VM nhóm lưu trữ khối

Đối với lưu trữ khối, hãy tạo một VM trống trong VergeOS có tên `k8spool`. Nó không bao giờ cần khởi động — nó chỉ giữ các ổ đĩa khối nhàn rỗi. ID của VM được truyền cho biểu đồ Helm trong quá trình cài đặt.

### Cài đặt

Trình điều khiển CSI được phân phối dưới dạng một biểu đồ Helm từ `verge-io` kho lưu trữ Helm và có thể được cài đặt qua Helm CLI hoặc thông qua **giao diện Rancher Apps** trên các cụm downstream. Xem [Tài liệu và tài nguyên](#documentation-and-resources) bên dưới để biết chi tiết biểu đồ, các giá trị Helm và các tùy chọn cấu hình.

{% hint style="warning" %}
**Cụm downstream**

Khi cài đặt thông qua giao diện Rancher Apps, kho lưu trữ Helm phải được thêm trên **cụm downstream**, chứ không phải cụm quản lý Rancher. ClusterRepos không được truyền từ cụm quản lý.
{% endhint %}

***

## Trình quản lý bộ điều khiển đám mây

Cloud Controller Manager (CCM) là giao diện nhà cung cấp đám mây Kubernetes tiêu chuẩn cho VergeOS. Nó xử lý quản lý vòng đời node và cung cấp bộ cân bằng tải.

### Tính năng

* **Quản lý node** — Điền siêu dữ liệu node Kubernetes (provider ID, loại instance, IP nội bộ) từ các VM VergeOS. Phát hiện sự tồn tại của VM và trạng thái nguồn để quản lý vòng đời node.
* **Cân bằng tải** — Tạo các quy tắc NAT/biên dịch của VergeOS VNet cho `type: LoadBalancer` các Service. Phân bổ IP từ một nhóm có thể cấu hình và tự động ánh xạ các cổng dịch vụ sang cổng node.

### Cách vòng đời node hoạt động

CCM triển khai giao diện Kubernetes `InstancesV2` giao diện:

1. **InstanceMetadata** — Ánh xạ một node Kubernetes tới một VM VergeOS (theo provider ID hoặc tên), sau đó trả về provider ID (`vergeos://<vm-id>`), loại instance (`<cpu>cpu-<ram>mb`), và các địa chỉ IP nội bộ từ các NIC của VM
2. **InstanceExists** — Kiểm tra xem VM nền bên dưới còn tồn tại trong VergeOS hay không
3. **InstanceShutdown** — Báo cáo liệu VM có đang tắt nguồn hay không

### Cách cân bằng tải hoạt động

CCM triển khai giao diện Kubernetes `LoadBalancer` giao diện sử dụng các quy tắc VergeOS VNet:

1. **EnsureLoadBalancer** — Phân bổ một IP từ nhóm, sau đó tạo một quy tắc NAT VNet cho mỗi cổng dịch vụ. Các quy tắc chuyển đổi `<allocated-ip>:<port>` thành `<node-ips>:<nodePort>`. Gọi `ApplyRules` để kích hoạt.
2. **UpdateLoadBalancer** — Cập nhật các IP đích trên các quy tắc hiện có khi các node thay đổi
3. **EnsureLoadBalancerDeleted** — Xóa tất cả các quy tắc VNet cho dịch vụ và áp dụng thay đổi

### Cài đặt

CCM được phân phối dưới dạng một biểu đồ Helm đi kèm với CSI driver. Cài đặt qua Helm CLI hoặc thông qua giao diện Rancher Apps trên cụm downstream. Xem [Tài liệu và tài nguyên](#documentation-and-resources) bên dưới để biết chi tiết biểu đồ và các tùy chọn cấu hình.

***

## Bộ tự động mở rộng cụm

Kubernetes Cluster Autoscaler hoạt động với các cụm được VergeOS hỗ trợ và được cung cấp thông qua [Rancher](/automate-protect-and-extend/vi/tich-hop-va-api/rancher-integration.md). Nó tự động điều chỉnh số lượng node trong một pool dựa trên các yêu cầu tài nguyên của pod đang chờ — tăng quy mô khi pod không thể được lên lịch và giảm quy mô khi các node chưa được sử dụng hết. Xem [Tài liệu và tài nguyên](#documentation-and-resources) bên dưới để biết liên kết tới dự án upstream.

### Cách hoạt động

Autoscaler sử dụng API của Rancher để quản lý các node pool:

1. **Tăng quy mô** — Khi các pod đang chờ do không đủ tài nguyên, autoscaler tăng kích thước node pool. Sau đó Rancher dùng driver Docker Machine để cung cấp các VM VergeOS mới.
2. **Giảm quy mô** — Khi các node bị sử dụng dưới mức trong một khoảng thời gian có thể cấu hình, autoscaler sẽ cordon, drain và gỡ bỏ chúng. Driver sẽ xóa các VM VergeOS nền.

{% hint style="success" %}
**Yêu cầu tài nguyên**

Autoscaler đưa ra quyết định mở rộng dựa trên các yêu cầu tài nguyên của pod, không phải mức sử dụng thực tế. Hãy đảm bảo các workload định nghĩa `requests` trong đặc tả pod của chúng để có hành vi mở rộng chính xác.
{% endhint %}

***

## Tóm tắt

VergeOS cung cấp ba thành phần Kubernetes hoạt động cùng nhau với bất kỳ cụm nào chạy trên các VM VergeOS:

* **Trình điều khiển CSI** — các persistent volume qua VergeOS NAS (ReadWriteMany) và lưu trữ khối vSAN (ReadWriteOnce)
* **Trình quản lý bộ điều khiển đám mây** — quản lý vòng đời node và `LoadBalancer` các Service được hỗ trợ bởi các quy tắc VergeOS VNet
* **Bộ tự động mở rộng cụm** — tự động mở rộng node pool cho các cụm được Rancher cung cấp

Tất cả các thành phần được phân phối dưới dạng biểu đồ Helm từ `verge-io` kho lưu trữ và có thể được cài đặt qua Helm CLI hoặc giao diện Rancher Apps.

## Các bước tiếp theo

* Mới làm quen với Rancher trên VergeOS? Hãy xem [Tích hợp Rancher](/automate-protect-and-extend/vi/tich-hop-va-api/rancher-integration.md) hướng dẫn về cung cấp cụm, chuẩn bị VM mẫu và thiết lập driver node.
* Đã có sẵn một cụm đang chạy? Hãy thêm kho lưu trữ Helm và khám phá các biểu đồ hiện có:

  ```bash
  helm repo add verge-io https://verge-io.github.io/helm-charts
  helm repo update
  helm search repo verge-io
  ```
* Truy cập các kho lưu trữ dự án bên dưới để xem các giá trị biểu đồ, tài liệu tham chiếu cấu hình và ghi chú phát hành.

## Tài liệu và tài nguyên

| Kho lưu trữ                                                                                                  | Mô tả                                        |
| ------------------------------------------------------------------------------------------------------------ | -------------------------------------------- |
| [csi-vergeos](https://github.com/verge-io/csi-vergeos)                                                       | trình điều khiển Container Storage Interface |
| [vergeos-cloud-controller-manager](https://github.com/verge-io/vergeos-cloud-controller-manager)             | Trình quản lý bộ điều khiển đám mây          |
| [helm-charts](https://github.com/verge-io/helm-charts)                                                       | Kho lưu trữ Helm chart                       |
| [Bộ tự động mở rộng cụm Kubernetes](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler) | Autoscaler cụm upstream                      |

## Hỗ trợ

Nếu bạn gặp sự cố hoặc có yêu cầu tính năng, vui lòng mở issue trong kho lưu trữ GitHub liên quan:

* [Vấn đề về CSI Driver](https://github.com/verge-io/csi-vergeos/issues)
* [Vấn đề về CCM](https://github.com/verge-io/vergeos-cloud-controller-manager/issues)
* [Vấn đề về biểu đồ Helm](https://github.com/verge-io/helm-charts/issues)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.verge.io/automate-protect-and-extend/vi/tich-hop-va-api/kubernetes-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
