news 2026/8/17 23:38:36

Proxmox CSI Plugin 多集群支持:一个 Kubernetes 集群接入多个 Proxmox 集群

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Proxmox CSI Plugin 多集群支持:一个 Kubernetes 集群接入多个 Proxmox 集群

Proxmox CSI Plugin 多集群支持:一个 Kubernetes 集群接入多个 Proxmox 集群

【免费下载链接】proxmox-csi-pluginProxmox CSI Plugin项目地址: https://gitcode.com/gh_mirrors/pr/proxmox-csi-plugin

Kubernetes 集群的存储规划常常陷入两难:数据放在本地磁盘虽然快,但节点一维护就得手动迁移;使用集中式存储又担心单点风险。Proxmox CSI Plugin提供了一条新思路——让 Kubernetes 直接使用 Proxmox VE 的存储作为持久卷,并且最吸引人的特性是:一个 Kubernetes 集群可以同时接入多个独立的 Proxmox 集群,用一套 CSI 插件统一管理分布在不同机房、不同物理服务器的存储资源,实现跨区域的调度与容灾。

本文将以新手视角,带你理解它的多集群支持原理,并给出可直接照做的配置方法。

为什么需要多集群支持?

在传统方案里,一个 CSI 驱动通常只对接一个存储后端。如果你的业务横跨多个机房,往往要部署多套存储方案、维护多个存储类(StorageClass),管理成本直线上升。

Proxmox CSI Plugin 的做法是:在云配置文件中声明一个clusters列表,每个 Proxmox 集群对应一个region(区域),插件会在内部为每个区域维护独立的 API 客户端。你在配置里加多少个集群,插件就自动接入多少个,代码层面由 pkg/proxmoxpool/pool.go 中的ProxmoxPool统一管理这些客户端连接。

这意味着:一套插件、一个 StorageClass,就能覆盖多个机房,Pod 通过拓扑约束(topology)被调度到离数据最近的节点上。

核心概念:Region 与 Zone 的映射关系

要理解多集群支持,先记住两个映射:

  • Region(区域)= 一个 Proxmox 集群,名称在配置文件的region字段中定义
  • Zone(可用区)= Proxmox 集群中的一个物理节点,名称就是节点名

这个映射关系直接落到 Kubernetes 的标准拓扑标签上:

拓扑标签含义
topology.kubernetes.io/regionProxmox 集群名(必须设置)
topology.kubernetes.io/zoneProxmox 节点名

给每个节点打上标签后,CSI 插件就能根据 Pod 所在节点的标签,自动决定把卷创建在哪个 Proxmox 集群、哪个节点的存储上。相关解析逻辑见 pkg/csi/helper.go 中的GetNodeTopology

上图是 Proxmox 中一台 Kubernetes 节点的虚拟机磁盘界面,其中scsi2磁盘(vm-9999-pvc-*)就是由 CSI 插件动态创建、挂载给 Pod 的持久卷——数据实际落在 Proxmox 侧,Pod 以块设备方式访问。

多集群配置方法:clusters 列表详解

接入多个 Proxmox 集群,只需在配置文件的clusters段下追加条目即可,格式见 docs/config.md:

clusters: - url: https://cluster-api-1.example.com:8006/api2/json insecure: false token_id: "kubernetes-csi@pve!csi" token_secret: "secret" region: Region-1 - url: https://cluster-api-2.example.com:8006/api2/json insecure: false token_id: "kubernetes-csi@pve!csi" token_secret: "secret" region: Region-2

每个集群条目包含 5 个关键字段:

  • url:Proxmox API 地址(/api2/json结尾)
  • insecure:是否跳过 TLS 证书校验
  • token_id / token_secret:API 令牌,在 Proxmox 中为 CSI 用户创建
  • region:区域名,必须与节点的topology.kubernetes.io/region标签完全一致

配置解析和校验逻辑位于 pkg/config/config.go,它会逐一检查每个集群的 URL、凭证和 region 是否合法,缺一不可。

使用 Helm 安装时如何配置多集群

如果使用 Helm 安装,同样的多集群配置写在 values 文件中,字段完全对应:

config: clusters: - url: https://cluster-api-1.example.com:8006/api2/json token_id: "kubernetes-csi@pve!csi" token_secret: "secret" region: Region-1 - url: https://cluster-api-2.example.com:8006/api2/json token_id: "kubernetes-csi@pve!csi" token_secret: "secret" region: Region-2 storageClass: - name: proxmox-data-xfs storage: data fstype: xfs volumeBindingMode: WaitForFirstConsumer

详细的 Helm 参数说明可以参考 charts/proxmox-csi-plugin/values.yaml。

三步完成多集群环境准备

第一步:Proxmox 侧创建 CSI 专用账号

在每个 Proxmox 集群上都执行一次,创建专用角色、用户和 API 令牌:

pveum role add CSI -privs "VM.Audit VM.Config.Disk Datastore.Allocate Datastore.AllocateSpace Datastore.Audit" pveum user add kubernetes-csi@pve pveum aclmod / -user kubernetes-csi@pve -role CSI pveum user token add kubernetes-csi@pve csi -privsep 0

第二步:给 Kubernetes 节点打拓扑标签

按节点实际所在的 Proxmox 集群与节点打标签:

kubectl label nodes region1-node-1 topology.kubernetes.io/region=Region-1 kubectl label nodes region1-node-1 topology.kubernetes.io/zone=pve-1 kubectl label nodes region2-node-1 topology.kubernetes.io/region=Region-2 kubectl label nodes region2-node-1 topology.kubernetes.io/zone=pve-2

注意:topology.kubernetes.io/region标签必须设置,否则插件无法判断卷应该创建在哪个 Proxmox 集群。

第三步:创建 StorageClass 并部署

多集群场景下建议使用WaitForFirstConsumer绑定模式,让卷在 Pod 调度到具体节点后才创建,从而落到正确的区域:

apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: proxmox-data-xfs provisioner: csi.proxmox.sinextra.dev parameters: csi.storage.k8s.io/fstype: xfs storage: data reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true

把配置文件上传为 Secret 后,按 docs/install.md 中的说明用kubectl apply或 Helm 完成部署即可。安装完成后,插件会自动巡检所有已配置的 Proxmox 集群连接是否可用(对应ProxmoxPool.CheckClusters)。

多集群支持带来的实际收益

  1. 一套存储类管理多个机房:无需为每个 Proxmox 集群创建独立的 StorageClass 和驱动实例
  2. 区域感知调度:Pod 会优先调度到卷所在区域的节点,避免跨机房 I/O
  3. 容量感知:插件通过GetCapacity接口上报每个区域、每台节点的存储容量,Kubernetes 调度器可据此做出更聪明的调度决策
  4. 平滑扩展:后期新增机房时,只需在clusters列表中追加一条配置,无需重建任何资源

使用场景建议

  • 跨机房高可用:将多个 Proxmox 集群分布在不同的物理位置,配合 region/zone 反亲和实现容灾
  • 家庭实验室(Homelab):用两台以上物理机组建多个 Proxmox 集群,集中管理所有虚拟机与持久卷
  • 混合存储环境:不同集群使用不同的存储后端(如 LVM、ZFS、Ceph),通过 StorageClass 的storage参数区分,但统一由插件调度

Proxmox CSI Plugin 的多集群支持,让「一个 Kubernetes 集群接入多个 Proxmox 集群」从配置到落地都变得简单直观。无论是小规模的 Homelab 还是跨机房的生产环境,它都能帮你把存储管理统一到一套体系之下,少一份运维负担,多一分数据安全感。

【免费下载链接】proxmox-csi-pluginProxmox CSI Plugin项目地址: https://gitcode.com/gh_mirrors/pr/proxmox-csi-plugin

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/17 23:35:44

智能家居本地化部署实战:从零搭建 Home Assistant 控制中枢

智能家居本地化部署实战:从零搭建 Home Assistant 控制中枢 【免费下载链接】core :house_with_garden: Open source home automation that puts local control and privacy first. 项目地址: https://gitcode.com/GitHub_Trending/co/core 你有没有想过&…

作者头像 李华
网站建设 2026/8/17 23:32:47

基于GraphRAG与DAILYDILEMMAS的LLM智能体社会价值对齐实践

1. 项目概述:从描述到规约的跨越最近在社区里,关于大语言模型智能体的讨论热度一直居高不下。大家似乎都热衷于构建一个能“听懂人话、办好事情”的智能助手,从自动写代码、分析数据到处理日常任务,智能体展现出的潜力令人兴奋。然…

作者头像 李华
网站建设 2026/8/17 23:29:55

Simulink模型到DSP代码生成:环境配置与工具链实战指南

1. 从模型到芯片:为什么DSP代码生成是道坎 如果你是从嵌入式软件或者算法仿真转过来的工程师,第一次接触“把Simulink模型变成能在DSP上跑的代码”这件事,大概率会有点懵。这感觉就像你画好了一张精密的建筑图纸(Simulink模型&…

作者头像 李华
网站建设 2026/8/17 23:29:53

PS5 Pro PSSR技术解析:AI超分如何通过“少干活”实现画质与性能双赢

你有没有想过,为什么在游戏主机这个领域,画质和帧率总是像一对难以调和的矛盾?开发者们为了在有限的硬件上榨取更多性能,往往需要在分辨率、特效和流畅度之间做出痛苦的取舍。玩家们则常常面临一个选择题:是选择4K分辨…

作者头像 李华