如何在 kubernetes 中使用 windows 容器挂载卷?
Posted
技术标签:
【中文标题】如何在 kubernetes 中使用 windows 容器挂载卷?【英文标题】:How to mount a volume with a windows container in kubernetes? 【发布时间】:2018-11-17 08:32:44 【问题描述】:我正在尝试将持久卷安装到我的 Windows 容器中,但我总是收到此错误:
无法为 pod "mssql-with-pv-deployment-3263067711-xw3mx_default(....)" 挂载卷:等待卷为 pod "default"/"mssql-with-pv 附加/挂载超时超时-部署-3263067711-xw3mx”。未附加/卸载的卷列表=[blobdisk01]
我创建了一个github gist,控制台输出为“get events”和“describe sc | pvc | po”,也许有人会用它找到解决方案。
以下是我用于部署的脚本。 我的存储类:
种类:存储类 api版本:storage.k8s.io/v1 元数据: 名称:天蓝色磁盘-sc 供应商:kubernetes.io/azure-disk 参数: skuname:标准_LRS我的 PersistentVolumeClaim:
api版本:v1 种类:PersistentVolumeClaim 元数据: 名称:天蓝色磁盘 pvc 规格: storageClassName: 天蓝色磁盘-sc 访问模式: - 读写一次 资源: 要求: 存储:20Gi以及我的容器的部署:
api版本:apps/v1beta1 种类:部署 元数据: 名称:mssql-with-pv-deployment 规格: 复制品:1 模板: 元数据: 标签: 应用程序:mssql-with-pv 规格: 节点选择器: beta.kubernetes.io/os:windows 终止GracePeriodSeconds:10 容器: - 名称:mssql-with-pv 图片:testacr.azurecr.io/sql/mssql-server-windows-developer 端口: - 容器端口:1433 环境: - 名称:ACCEPT_EULA 值:“Y” - 名称:SA_PASSWORD 值来自: 秘钥参考: 名称:mssql 密钥:SA_PASSWORD 卷装: - 安装路径:“c:/volume” 名称:blobdisk01 卷: - 名称:blobdisk01 持久卷声明: 声明名称:天蓝色磁盘 pvc --- api版本:v1 种类:服务 元数据: 名称:mssql-with-pv-deployment 规格: 选择器: 应用程序:mssql-with-pv 端口: - 协议:TCP 港口:1433 目标端口:1433 类型:负载均衡器我做错了什么?还有另一种挂载卷的方法吗?
感谢大家的帮助:)
【问题讨论】:
如果使用 storageClassName 属性,而不是 PVC 定义中的 volume.beta.kubernetes.io/storage-class 注解呢? @AndréB 我将metadata.annotations.volume.alpha.kubernetes.io/storage-class: azure-slow
更改为spec.storageClassName: slow
,但我仍然遇到同样的错误
你的意思是 spec.storageClassName: azure-slow 对吧?
@AndréB 哦不,但我现在试过了,pcv 的绑定错误消失了,但它仍然无法挂载卷并卡在容器创建中
你应该用新的发展更新帖子,也许有人能找出问题所在! :)
【参考方案1】:
我会尝试:
-
将 API 版本更改为 v1:https://kubernetes.io/docs/concepts/storage/storage-classes/#azure-disk
kubectl get events
看你是否有更详细的错误(我用 NFS 看事件的时候可以弄清楚原因)
可能是这个bug,我读到过这个post?
【讨论】:
我试过了,但不幸的是我的问题没有改变。我用“get events”和“describe sc | pvc | po”的控制台输出创建了一个github gist,也许有人会用它找到解决方案。我也找不到错误和我的问题之间的联系。【参考方案2】:您需要在 D: 驱动器中创建一个新卷,看起来 C: 中的文件夹不支持 Windows 容器,请参见此处:
https://github.com/kubernetes/kubernetes/issues/65060
演示: https://github.com/andyzhangx/demo/tree/master/windows/azuredisk
【讨论】:
以上是关于如何在 kubernetes 中使用 windows 容器挂载卷?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Windows上为Google云平台添加docker-registry secret(就是在PowerShell中,不是Bash)?
在 Kubernetes 上的 Jenkins 管道中使用 npm 构建 ReactJs 应用程序
Windows环境下,如何在Docker里运行SAP UI5应用