我正在尝试运行Jenkins Helm图表。作为此设置的一部分,我想通过提前提供的持久卷(或在迁移过程中从另一个集群导出(。
我正在尝试以一种方式来获得我的持久卷(PV(和持久卷声明(PVC(的设置,以至于当Jenkins启动时,它会使用我的预定义PV和PVC。
我认为该问题源自Azure磁盘的持久存储定义,指向我的存储帐户中的VHD。有什么方法可以将其指向现有的托管磁盘 - 而不是斑点?
这是我使用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(启动时收到的错误。
Attachvolume.attach因" Jenkins-Home"的音量失败:附加音量" Jenkins-Home"到实例" AKS-AGENTPOOL-40897452-0" compute.virtualMachinesClient#creationorUpdate失败了 - 原始错误:Autorest/Azure:服务返回错误。状态= 409代码=" aperationNotAllowed"消息="在使用托管磁盘的VM中添加基于斑点的磁盘的添加。"
我在这里向Azure团队提出了这个问题。
通过他们的帮助,我到达了以下解决方案...
我曾经尝试使用托管磁盘资源ID,但它对我大喊大叫,说它期望一个.vhd文件。但是,在添加了"善良:管理"之后,很高兴获得托管磁盘资源ID。
创建一个空的和格式的托管磁盘当然是可行的先决条件。还需要将托管磁盘复制到同一资源组中。
所以现在我的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