6

我正在尝试运行Jenkins Helm 图表。作为此设置的一部分,我想传入一个我提前配置的持久卷(或者可能在迁移期间从另一个集群导出)。

我正在尝试以这样一种方式设置我的持久卷 (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 启动时我收到的错误。

卷“jenkins-home”的 AttachVolume.Attach 失败:将卷“jenkins-home”附加到实例“aks-agentpool-40897452-0”失败,计算失败。VirtualMachinesClient#CreateOrUpdate:响应请求失败:StatusCode=409 - 原始错误: autorest/azure: 服务返回错误。" Status=409 Code="OperationNotAllowed" Message="不支持将基于 blob 的磁盘添加到具有托管磁盘的 VM。"

4

1 回答 1

9

我在这里向 Azure 团队提出了这个问题。

通过他们的帮助,我得出了以下解决方案......

我之前曾尝试使用托管磁盘资源 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
于 2018-02-20T18:41:18.877 回答