无法附加 aws ebs 卷,错误 "instance not found"
Unable to attach aws ebs volume, error "instance not found"
信息:
- Kubernetes 服务器版本:1.14
- AWS 云提供商
- EBS 卷、存储class
详情:
我已经在我们的 kubernetes 集群中安装了 statefulset,但是,它停留在“ContainerCreating”状态。检查日志后,错误是“AttachVolume.Attach failed for volume pvc-xxxxxx: error finding instance ip-xxxxx : “instance not found”
大约17天前安装成功,但重新安装更新导致pod卡在ContainerCreating中。
可以手动将卷附加到实例。但是通过存储 class 进行操作是行不通的,并且停留在 ContainerCreating 状态。
存储class:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.kubernetes.io/is-default-class: "true"
name: ssd-default
allowVolumeExpansion: true
parameters:
encrypted: "true"
type: gp2
provisioner: kubernetes.io/aws-ebs
reclaimPolicy: Delete
volumeBindingMode: Immediate
pvc yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
finalizers:
- kubernetes.io/pvc-protection
labels:
app.kubernetes.io/instance: thanos-store
app.kubernetes.io/name: thanos-store
name: data-thanos-store-0
namespace: thanos
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
storageClassName: ssd-default
volumeMode: Filesystem
volumeName: pvc-xxxxxx
status:
accessModes:
- ReadWriteOnce
capacity:
storage: 3Gi
phase: Bound
pv yaml:
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
kubernetes.io/createdby: aws-ebs-dynamic-provisioner
pv.kubernetes.io/bound-by-controller: "yes"
pv.kubernetes.io/provisioned-by: kubernetes.io/aws-ebs
finalizers:
- kubernetes.io/pv-protection
labels:
failure-domain.beta.kubernetes.io/region: ap-xxx
failure-domain.beta.kubernetes.io/zone: ap-xxx
name: pvc-xxxx
spec:
accessModes:
- ReadWriteOnce
awsElasticBlockStore:
fsType: ext4
volumeID: aws://xxxxx
capacity:
storage: 3Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: data-athena-thanos-store-0
namespace: thanos
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: failure-domain.beta.kubernetes.io/region
operator: In
values:
- ap-xxx
- key: failure-domain.beta.kubernetes.io/zone
operator: In
values:
- ap-xxx
persistentVolumeReclaimPolicy: Delete
storageClassName: ssd-default
volumeMode: Filesystem
status:
phase: Bound
描述 PVC:
Name: data-athena-thanos-store-0
Namespace: athena-thanos
StorageClass: ssd-encrypted
Status: Bound
Volume: pvc-xxxx
Labels: app.kubernetes.io/instance=athena-thanos-store
app.kubernetes.io/name=athena-thanos-store
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 3Gi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: athena-thanos-store-0
当 EBS 卷无法与实例分离,因此无法附加到另一个实例时,会发生 FailedAttachVolume
错误。 EBS 卷必须处于可用状态才能附加。 FailedAttachVolume
通常是潜在的卸载和分离卷失败的症状。
请注意,在描述 PVC 时,StorageClass
名称是 ssd-encrypted
,这与您之前显示的配置不匹配,其中 kind: StorageClass
名称是 ssd-default
。这就是为什么您可以手动安装卷而不是通过 StorageClass
。您可以使用适当的数据删除并重新创建 StorageClass
。
此外,我建议通过 this article 并使用 volumeBindingMode: WaitForFirstConsumer
而不是 volumeBindingMode: Immediate
。此设置指示卷供应器不立即创建卷,而是等待使用关联 PVC 的 pod 通过调度运行。
信息:
- Kubernetes 服务器版本:1.14
- AWS 云提供商
- EBS 卷、存储class
详情: 我已经在我们的 kubernetes 集群中安装了 statefulset,但是,它停留在“ContainerCreating”状态。检查日志后,错误是“AttachVolume.Attach failed for volume pvc-xxxxxx: error finding instance ip-xxxxx : “instance not found”
大约17天前安装成功,但重新安装更新导致pod卡在ContainerCreating中。
可以手动将卷附加到实例。但是通过存储 class 进行操作是行不通的,并且停留在 ContainerCreating 状态。
存储class:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.kubernetes.io/is-default-class: "true"
name: ssd-default
allowVolumeExpansion: true
parameters:
encrypted: "true"
type: gp2
provisioner: kubernetes.io/aws-ebs
reclaimPolicy: Delete
volumeBindingMode: Immediate
pvc yaml:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
finalizers:
- kubernetes.io/pvc-protection
labels:
app.kubernetes.io/instance: thanos-store
app.kubernetes.io/name: thanos-store
name: data-thanos-store-0
namespace: thanos
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
storageClassName: ssd-default
volumeMode: Filesystem
volumeName: pvc-xxxxxx
status:
accessModes:
- ReadWriteOnce
capacity:
storage: 3Gi
phase: Bound
pv yaml:
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
kubernetes.io/createdby: aws-ebs-dynamic-provisioner
pv.kubernetes.io/bound-by-controller: "yes"
pv.kubernetes.io/provisioned-by: kubernetes.io/aws-ebs
finalizers:
- kubernetes.io/pv-protection
labels:
failure-domain.beta.kubernetes.io/region: ap-xxx
failure-domain.beta.kubernetes.io/zone: ap-xxx
name: pvc-xxxx
spec:
accessModes:
- ReadWriteOnce
awsElasticBlockStore:
fsType: ext4
volumeID: aws://xxxxx
capacity:
storage: 3Gi
claimRef:
apiVersion: v1
kind: PersistentVolumeClaim
name: data-athena-thanos-store-0
namespace: thanos
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: failure-domain.beta.kubernetes.io/region
operator: In
values:
- ap-xxx
- key: failure-domain.beta.kubernetes.io/zone
operator: In
values:
- ap-xxx
persistentVolumeReclaimPolicy: Delete
storageClassName: ssd-default
volumeMode: Filesystem
status:
phase: Bound
描述 PVC:
Name: data-athena-thanos-store-0
Namespace: athena-thanos
StorageClass: ssd-encrypted
Status: Bound
Volume: pvc-xxxx
Labels: app.kubernetes.io/instance=athena-thanos-store
app.kubernetes.io/name=athena-thanos-store
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 3Gi
Access Modes: RWO
VolumeMode: Filesystem
Mounted By: athena-thanos-store-0
当 EBS 卷无法与实例分离,因此无法附加到另一个实例时,会发生 FailedAttachVolume
错误。 EBS 卷必须处于可用状态才能附加。 FailedAttachVolume
通常是潜在的卸载和分离卷失败的症状。
请注意,在描述 PVC 时,StorageClass
名称是 ssd-encrypted
,这与您之前显示的配置不匹配,其中 kind: StorageClass
名称是 ssd-default
。这就是为什么您可以手动安装卷而不是通过 StorageClass
。您可以使用适当的数据删除并重新创建 StorageClass
。
此外,我建议通过 this article 并使用 volumeBindingMode: WaitForFirstConsumer
而不是 volumeBindingMode: Immediate
。此设置指示卷供应器不立即创建卷,而是等待使用关联 PVC 的 pod 通过调度运行。