我们使用这个AKS集群来托管我们的Azuredevops构建代理作为docker容器。我们按照微软文档,我们按照这个链接到https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/docker?view=azure-devops设置ADO代理,设置这个代理准备好了,但是我们面临着一些性能和稳定性问题与ADO代理的使用。
我们引用MS文档来设置基于文件共享的持久卷,以便跨多个aks代理pod使用,并将该PV卷指定为构建的maven和节点缓存存储库。但是构建比正常的要慢得多(慢4倍)。我们使用私有端点的存储帐户[标准两地冗余存储(GRS)]文件共享。但是当我们使用azure磁盘作为持久卷时,构建速度更快。但是基于磁盘的pv不能跨多个节点挂载。那么,为什么基于文件共享的PV会出现这种性能问题?推荐的解决方案是什么?
或者我们可以在多个节点之间共享Azuredisk吗?
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 100Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
csi:
driver: file.csi.azure.com
readOnly: false
volumeHandle: unique-volumeid # make sure this volumeid is unique in the cluster
volumeAttributes:
resourceGroup: my-rg
shareName: aksshare
nodeStageSecretRef:
name: azure-secret
namespace: ado
mountOptions:
- dir_mode=0777
- file_mode=0777
- uid=0
- gid=0
- mfsymlinks
- cache=strict
- nosharesock
- nobrl
#############################
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
volumeName: my-pv
resources:
requests:
storage: 100Gi
#############################
apiVersion: v1
data:
azurestorageaccountkey: ''
azurestorageaccountname: ''
kind: Secret
metadata:
name: azure-secret
namespace: aks
type: Opaque
我建议使用高级文件共享。它们的性能比标准层要好得多。
如果您使用的是现成的存储类,那么请使用"azurefile-csi-premium"存储类。
如果使用自己的存储类,则在存储类定义的末尾添加以下内容(在创建高级共享之后):
parameters:
skuName: Premium_LRS
引用:
Azure文件的可伸缩性和性能目标
Azure File Dynamic
Azure File Static
虽然高级分级可能会产生更好的性能,特别是如果您选择采用NFS路由,但请注意,高级分级文件共享的最小大小为100Gi。
所以即使你的PVC可能报告2Gi这样的小数值,你也会被收取100Gi的费用。
来源:https://learn.microsoft.com/en-us/azure/storage/files/understanding-billing