我正在尝试运行Jenkins Helm chart。作为此设置的一部分,我想传递我提前配置的持久卷(或者可能在迁移期间从另一个群集导出)。
我正在尝试以这样的方式获取我的持久音量(PV)和持久音量声明(PVC)设置,当Jenkins启动时,它使用我预定义的PV和PVC。
我认为问题源于Azure磁盘的持久存储定义指向我的存储帐户中的VHD。有没有办法将它指向现有的托管磁盘 - 而不是blob?
这是我使用Azure托管磁盘设置持久存储的方式
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-home
spec:
capacity:
storage: 10Gi
storageClassName: default
azureDisk:
diskName: jenkins-home
diskURI: https://<storageaccount>.blob.core.windows.net/jenkins-data/jenkins-home.vhd
fsType: ext4
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
claimRef:
name: jenkins-home-pvc
namespace: default
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-home-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: default
然后我就这样开始掌舵...
helm install --name jenkins stable/jenkins --values=values.yaml
我的values.yaml
文件看起来像
Persistence:
ExistingClaim: jenkins-home-pvc
这是Jenkins'pod启动时收到的错误。
AttachVolume.Attach卷“jenkins-home”失败:将卷“jenkins-home”附加到实例“aks-agentpool-40897452-0”失败,计算失败.VirtualMachinesClient#CreateOrUpdate:响应请求失败:StatusCode = 409 - - 原始错误:autorest / azure:服务返回错误。 Status = 409 Code =“OperationNotAllowed”Message =“不支持向托管磁盘添加基于blob的磁盘。”
答案 0 :(得分:3)
我向Azure团队here提出了这个问题。
通过他们的帮助,我得出了以下解决方案......
之前我曾尝试过使用托管磁盘资源ID,但是我大吼大叫说它预计会有.vhd文件。但在添加'kind:Managed'之后,很高兴获取托管磁盘资源ID。
创建一个空的和格式化的托管磁盘当然是这个工作的先决条件。还需要将受管磁盘复制到与AKS群集相同的资源组中。
所以现在我的PV和PVC看起来像这样,它正在工作......
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-home
spec:
capacity:
storage: 10Gi
storageClassName: default
azureDisk:
kind: Managed
diskName: jenkins-home
diskURI: /subscriptions/{subscription-id}/resourceGroups/{aks-controlled-resource-group-name}/providers/Microsoft.Compute/disks/jenkins-home
fsType: ext4
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
claimRef:
name: jenkins-home-pvc
namespace: default
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-home-pvc
annotations:
volume.beta.kubernetes.io/storage-class: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: default