讲师中心 微信公众号
AI工具推荐 视频效率加速

Kubernetes Cinder Volume 插件工作原理详解

落静同学_5958

落静同学_5958

发布时间:2026-09-17 17:16:26

|

512人浏览过

|

来源于php中文网

原创

Kubernetes Cinder Volume 插件工作原理详解

本文解析 kubernetes 中 cinder 存储插件的运行机制,说明其如何通过 openstack cinder api 实现持久卷的挂载与管理,并澄清动态供应(provisioner)在早期版本中的缺失现状及后续演进路径。

本文解析 kubernetes 中 cinder 存储插件的运行机制,说明其如何通过 openstack cinder api 实现持久卷的挂载与管理,并澄清动态供应(provisioner)在早期版本中的缺失现状及后续演进路径。

Kubernetes 的 Cinder 卷插件(pkg/volume/cinder/)是一个静态绑定型持久卷(PersistentVolume, PV)插件,用于在 OpenStack 环境中将 Cinder 块存储卷挂载到 Pod 中。它不实现动态供应(即不提供 kubernetes.io/cinder Provisioner),而是依赖管理员预先在 OpenStack 中创建好 Cinder 卷,并在 Kubernetes 中手动定义对应的 PV 对象。

工作流程概览

  1. 用户声明使用 Cinder 卷:通过 PersistentVolumeClaim(PVC)请求存储,该 PVC 与一个已存在的、类型为 cinderPersistentVolume 绑定;
  2. Kubelet 调用插件:当 Pod 调度到某 Node 后,Kubelet 检测到容器需挂载 Cinder 卷,调用 cinder 插件的 MountDeviceSetUp 方法;
  3. 插件调用 Cinder REST API:插件内部使用 Go SDK(如 gophercloud)或直接构造 HTTP 请求,向 OpenStack Cinder 服务发送认证后的 API 调用,完成以下关键操作:
    • 查询卷状态(GET /v3/{project_id}/volumes/{volume_id});
    • 附加卷到目标计算节点(POST /v3/{project_id}/volumes/{volume_id}/action,body: {"os-attach": {"instance_id": "..."}});
    • 获取挂载设备路径(如 /dev/vdb),再执行 mkfs(可选)和 mount 操作;
  4. 卸载时反向清理:Pod 删除时,插件调用 TearDownUnmountDevice,并发送 os-detach 请求解除卷绑定。

关键代码逻辑示意(简化)

// 示例:cinder.go 中 Attach 操作核心片段(源自 v1.20 前源码)
func (plugin *cinderPlugin) NewAttacher() volume.Attacher {
    return &cinderAttacher{
        host: plugin.host,
    }
}

func (a *cinderAttacher) Attach(spec *volume.Spec, nodeName types.NodeName) (string, error) {
    // 1. 解析 spec 获取 volumeID、availabilityZone 等
    // 2. 初始化 OpenStack 连接(读取 cloud-config)
    client, err := openstack.NewBlockStorageV3(a.cloud, gophercloud.EndpointOpts{})
    if err != nil {
        return "", err
    }
    // 3. 调用 Cinder API 附加卷
    attachOpts := volumes.AttachOpts{
        InstanceID: string(nodeName),
    }
    _, err = volumes.Attach(client, volumeID, attachOpts).Extract()
    return volumeID, err
}

⚠️ 注意事项:

Kubernetes Skills
Kubernetes Skills

针对 Kubernetes 仪表板和 Web UI 的浏览器自动化。适用于与 Kubernetes Dashboard、Grafana、ArgoCD UI 或其他 Web 界面交互。需要设置 MCP_BROWSER_ENABLED=true。

下载
  • 必须配置 --cloud-provider=openstack 及有效 cloud-config 文件,否则插件无法获取 OpenStack 认证凭据与 Endpoint;
  • Cinder 插件不负责创建/删除卷,仅管理挂载/卸载生命周期;动态供应需依赖外部控制器(如 openstack-cloud-controller-manager + cinder-csi-driver);
  • 自 Kubernetes v1.11 起,官方推荐迁移到 CSI(Container Storage Interface)架构,即使用 cinder-csi-plugin 替代树内(in-tree)插件,以获得更标准、可扩展、支持动态供应与快照的能力。

总结

Cinder 插件本质是 Kubernetes 与 OpenStack Cinder 之间的协议桥接器,其核心是安全、可靠地调用 Cinder REST API 完成卷的附加与文件系统挂载。尽管早期版本缺乏原生 Provisioner 支持,但通过云厂商集成与 CSI 生态的成熟,如今已在生产环境广泛支持全自动卷供给、加密、QoS 与多可用区部署。对于新项目,强烈建议直接采用 cinder-csi-driver 并启用 StorageClass 动态供应能力。

热门AI工具

更多
咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

96

2025.12.22

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

148

2026.06.29

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

20

2026.09.21

NumPy随机数文件读写与dtype数据类型
NumPy随机数文件读写与dtype数据类型

本专题整理 NumPy 随机数、文件读写与 dtype 数据类型相关教程,覆盖 Generator/random、随机数种子、正态分布采样、npy/npz/CSV/TXT 保存读取、loadtxt/savetxt、memmap、大文件处理、astype 类型转换、结构化 dtype、整数溢出和精度丢失等场景。

0

2026.09.21

NumPy矩阵运算与线性代数计算
NumPy矩阵运算与线性代数计算

本专题整理 NumPy 矩阵运算与线性代数计算相关教程,覆盖矩阵乘法、dot 与 @ 运算符、逆矩阵、行列式、特征值与特征向量、SVD、线性方程组、欧氏距离、矩阵分解和大规模矩阵性能优化等内容,帮助读者掌握 np.linalg 与矩阵计算实战。

0

2026.09.21

NumPy广播机制数学运算与统计分析
NumPy广播机制数学运算与统计分析

本专题整理 NumPy 广播机制、数组数学运算与统计分析相关教程,覆盖广播规则、维度对齐、矩阵与数组加减除法、向量化计算、均值方差、分位数、中位数、直方图和 unique 频次统计等场景,帮助读者掌握 ndarray 高效计算与统计处理方法。

0

2026.09.21

NumPy数组创建索引切片与数据选择
NumPy数组创建索引切片与数据选择

本专题整理 NumPy 数组创建、索引、切片与数据选择相关教程,覆盖 np.array、zeros/ones、多维数组形状、基础切片、花式索引、布尔索引、条件筛选、视图与副本等常用场景,帮助读者系统掌握 ndarray 数据构造与高效提取方法。

0

2026.09.21

Aionclaw智能助手介绍
Aionclaw智能助手介绍

本专题汇总了AionClaw(AI龙虾助手)的功能介绍与在线使用入口。AionClaw是杭州趣猿人工智能有限公司推出的桌面级AI智能体,能直接在电脑上读写文件、运行脚本、操作浏览器,自动交付Word、PPT、Excel等成品。

40

2026.09.20

AionClaw AI智能体与电脑自动化任务执行功能使用教程
AionClaw AI智能体与电脑自动化任务执行功能使用教程

AionClaw专题整理AI智能体与电脑自动化相关功能使用教程,涵盖安装部署、AI任务执行、Skills技能、文件处理、浏览器控制、电脑操作、持久记忆、聊天工具连接以及办公、编程和内容创作等功能,帮助用户快速掌握AionClaw的实际使用方法。

0

2026.09.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn