如何在Kubernetes Pod中挂载Hetzner Storage Box远程磁盘?
如何在Kubernetes Pod中挂载Hetzner Storage Box远程磁盘?
当然有可行的方案!针对你提到的几种协议,Kubernetes有对应的工具和配置方法来实现Hetzner Storage Box到Pod卷的挂载,我给你逐个拆解说明:
1. SAMBA/CIFS(推荐,最稳定)
这是挂载远程存储最常用的方式之一,Kubernetes官方生态有成熟的CSI驱动支持:
- 首先安装
csi-driver-smb到你的集群(可以用helm或者kubectl直接部署) - 创建一个Secret存储Hetzner Storage Box的用户名和密码:
apiVersion: v1 kind: Secret metadata: name: hetzner-smb-secret type: Opaque data: username: <base64编码的用户名> password: <base64编码的密码>
- 定义PersistentVolume(PV)指向你的Hetzner Storage Box:
apiVersion: v1 kind: PersistentVolume metadata: name: hetzner-smb-pv spec: capacity: storage: 100Gi accessModes: - ReadWriteMany persistentVolumeReclaimPolicy: Retain csi: driver: smb.csi.k8s.io volumeHandle: hetzner-smb-volume volumeAttributes: source: "//your-storage-box.your-hetzner-domain/your-share-path" nodeStageSecretRef: name: hetzner-smb-secret namespace: default
- 创建PersistentVolumeClaim(PVC)绑定这个PV:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: hetzner-smb-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 100Gi volumeName: hetzner-smb-pv
- 最后在Pod中引用这个PVC:
apiVersion: v1 kind: Pod metadata: name: smb-test-pod spec: containers: - name: test-container image: nginx volumeMounts: - name: smb-volume mountPath: /mnt/hetzner-storage volumes: - name: smb-volume persistentVolumeClaim: claimName: hetzner-smb-pvc
2. SFTP/SCP
可以使用sftp-csi-driver来实现挂载,步骤和上面类似:
- 安装SFTP CSI驱动后,创建存储凭证的Secret(用户名、密码或私钥)
- 配置PV时指定SFTP服务器地址、端口(Hetzner默认22)和路径,然后通过PVC挂载到Pod中。如果用私钥认证,需要把私钥存在Secret里并在PV中配置对应的参数。
3. FTP/FTPS
目前没有官方的CSI驱动,但可以使用第三方的ftp-csi-driver。或者如果不需要实时挂载,也可以用Sidecar容器:启动一个FTP客户端容器,定期同步Hetzner Storage Box的文件到emptyDir卷,然后主Pod通过emptyDir访问数据。不过实时挂载的话还是推荐用第三方CSI驱动,配置逻辑和其他CSI驱动一致,需要在Secret中存储FTP的认证信息,PV中指定FTP服务器地址和路径。
4. WebDAV
可以使用第三方的WebDAV CSI驱动,比如webdav-csi-driver。配置流程同样是:安装驱动→创建存储WebDAV认证信息的Secret→定义PV(指定WebDAV的URL、认证方式)→创建PVC→在Pod中挂载。
5. SSH/rsync/BorgBackup
这类工具更适合数据同步/备份场景,而不是实时挂载:
- 如果是备份需求,可以在Pod中直接运行rsync或BorgBackup命令,把Hetzner Storage Box作为备份目标,凭证存在Secret里,通过环境变量或者挂载Secret到Pod中获取认证信息。
- 也可以用CronJob定期执行同步任务,把集群内的数据同步到Hetzner Storage Box,或者反过来。
注意事项
- 确保你的Kubernetes集群能访问Hetzner Storage Box的对应端口(比如SAMBA的445、SFTP的22、FTP的21等),需要检查集群防火墙和Hetzner的防火墙规则。
- 所有CSI驱动都需要集群有对应的RBAC权限,安装时要确保权限配置正确。
- Hetzner Storage Box的用户名通常是你的账号ID加存储箱编号,比如
u123456-sub0,密码是你设置的存储箱密码。
备注:内容来源于stack exchange,提问作者Bugpirasi
相关产品推荐
相关产品推荐

