可以在Azure Kubernetes中将一个共享Azure磁盘挂载到多个Pod/节点上吗? [英] Is it possible to mount a shared Azure disk in Azure Kubernetes to multiple PODs/Nodes?
本文介绍了可以在Azure Kubernetes中将一个共享Azure磁盘挂载到多个Pod/节点上吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
因此,我在Azure门户中创建了一个共享磁盘,尝试将其挂载到Kubernetes中的部署时出现错误:
卷";azuredisk";卷的多连接错误已被Pod使用...
Kubernetes中可以使用共享磁盘吗?如果是这样的话,是怎么做的? 谢谢你的提示。
推荐答案
Yes, you can,能力为GA。
Azure共享磁盘可以挂载为ReadWriteMany,这意味着您可以将其挂载到多个节点和Pod。它需要Azure Disk CSI driver,但需要注意的是,目前仅支持原始数据块卷,因此应用程序负责管理共享磁盘上的写、读、锁定、缓存、装载和隔离控制,共享磁盘公开为原始数据块设备。这意味着您将原始块设备(磁盘)作为volumeDevice
而不是volumeMount
挂载到Pod容器。
The documentation examples主要指向如何创建存储类来动态配置静态Azure共享磁盘,但我也静态创建了一个并将其挂载到不同节点上的多个Pod。
动态配置共享Azure磁盘
- 创建存储类和PVC
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: managed-csi
provisioner: disk.csi.azure.com
parameters:
skuname: Premium_LRS # Currently shared disk only available with premium SSD
maxShares: "2"
cachingMode: None # ReadOnly cache is not available for premium SSD with maxShares>1
reclaimPolicy: Delete
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-azuredisk
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 256Gi # minimum size of shared disk is 256GB (P15)
volumeMode: Block
storageClassName: managed-csi
- 创建具有2个副本的部署,并在Spec中指定volumeDevices、devicePath
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: nginx
name: deployment-azuredisk
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
name: deployment-azuredisk
spec:
containers:
- name: deployment-azuredisk
image: mcr.microsoft.com/oss/nginx/nginx:1.17.3-alpine
volumeDevices:
- name: azuredisk
devicePath: /dev/sdx
volumes:
- name: azuredisk
persistentVolumeClaim:
claimName: pvc-azuredisk
使用静态调配的Azure共享磁盘
使用通过ARM、Azure门户或Azure CLI配置的Azure共享磁盘。
- 定义引用DiskURI和DiskName的PersistentVolume(PV):
apiVersion: v1
kind: PersistentVolume
metadata:
name: azuredisk-shared-block
spec:
capacity:
storage: "256Gi" # 256 is the minimum size allowed for shared disk
volumeMode: Block # PV and PVC volumeMode must be 'Block'
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
azureDisk:
kind: Managed
diskURI: /subscriptions/<subscription>/resourcegroups/<group>/providers/Microsoft.Compute/disks/<disk-name>
diskName: <disk-name>
cachingMode: None # Caching mode must be 'None'
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-azuredisk-managed
spec:
resources:
requests:
storage: 256Gi
volumeMode: Block
accessModes:
- ReadWriteMany
volumeName: azuredisk-shared-block # The name of the PV (above)
对于动态配置的共享磁盘和静态配置的共享磁盘,挂载此PVC是相同的。引用上面的部署。
这篇关于可以在Azure Kubernetes中将一个共享Azure磁盘挂载到多个Pod/节点上吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文