如何将手动配置的 Azure 托管磁盘配置为用作 Kubernetes 持久卷?
How to configure a manually provisioned Azure Managed Disk to use as a Kubernetes persistent volume?
我正在尝试 运行 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 failed for volume "jenkins-home" : Attach volume "jenkins-home" to instance "aks-agentpool-40897452-0" failed with compute.VirtualMachinesClient#CreateOrUpdate: Failure responding to request: StatusCode=409 -- Original Error: autorest/azure: Service returned an error. Status=409 Code="OperationNotAllowed" Message="Addition of a blob based disk to VM with managed disks is not supported."
我向 Azure 团队提出了这个问题 here。
通过他们的帮助,我得出了以下解决方案...
我之前曾尝试使用托管磁盘资源 ID,但它对我大喊大叫,说它需要一个 .vhd 文件。但是加了'kind: Managed'之后,拿来托管磁盘资源id就完美了。
创建一个空的且格式化的托管磁盘当然是 pre-requisite 才能正常工作。还需要将托管磁盘复制到与 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
我正在尝试 运行 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 failed for volume "jenkins-home" : Attach volume "jenkins-home" to instance "aks-agentpool-40897452-0" failed with compute.VirtualMachinesClient#CreateOrUpdate: Failure responding to request: StatusCode=409 -- Original Error: autorest/azure: Service returned an error. Status=409 Code="OperationNotAllowed" Message="Addition of a blob based disk to VM with managed disks is not supported."
我向 Azure 团队提出了这个问题 here。
通过他们的帮助,我得出了以下解决方案...
我之前曾尝试使用托管磁盘资源 ID,但它对我大喊大叫,说它需要一个 .vhd 文件。但是加了'kind: Managed'之后,拿来托管磁盘资源id就完美了。
创建一个空的且格式化的托管磁盘当然是 pre-requisite 才能正常工作。还需要将托管磁盘复制到与 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