Tích hợp Kubernetes
VergeOS cung cấp tích hợp Kubernetes gốc thông qua trình điều khiển lưu trữ CSI và Cloud Controller Manager, cung cấp cho các cluster chạy trên VM VergeOS lưu trữ bền vững, quản lý vòng đời nút và load balancer.
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, 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.
Lưu trữ bền vững cho các pod Kubernetes qua VergeOS vSAN
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)
kubectlvàhelmCác công cụ CLIQuyền truy cập vào kubeconfig của cụm
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ụ:
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
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 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.
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ý.
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: LoadBalancercá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:
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 VMInstanceExists — Kiểm tra xem VM nền bên dưới còn tồn tại trong VergeOS hay không
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:
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ọiApplyRulesđể kích hoạt.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
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 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. 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 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:
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.
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.
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.
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à
LoadBalancercác Service được hỗ trợ bởi các quy tắc VergeOS VNetBộ 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 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ó:
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
trình điều khiển Container Storage Interface
Trình quản lý bộ điều khiển đám mây
Kho lưu trữ Helm chart
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:
Cập nhật lần cuối
Nội dung này có hữu ích không?