首页 > 解决方案 > Kubernetes 无法在 AWS-EBS 上创建 PersistentVolumeClaim

问题描述

我使用kubeadm. Kubernetes 集群工作正常,但是当我尝试创建一个PersistentVolumeClaim.

首先,我StorageClass使用以下 YAML 创建了一个,它工作正常。

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: generic
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
  encrypted: "false"

然后我尝试PersistentVolumeClaim使用以下 YAML 创建一个:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: slow
  labels:
    app: nginx
spec:
  storageClassName: generic
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 3Gi

在此处输入图像描述

收到以下错误消息:

无法使用 StorageClass“通用”预置卷:无法获取 AWS 云提供商。GetCloudProvider 改为返回 <nil>

顺便说一句,似乎PersistentVolume从未创建过。

kubectl get pv
No resources found.

任何想法如何解决这个问题?

谢谢。

标签: amazon-web-serviceskubernetespersistent-volumes

解决方案


--cloud-provider=aws这是因为您在运行 kubeadm init 时没有使用该选项

kubeadm --cloud-provider=aws init ...

或者,您应该将云提供商信息( cloudProvider )放入您的配置文件中,它会在初始化期间将云提供商标志添加到 api 和控制器管理器:

apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
etcd:
  endpoints:
  - "http://my-etcd1"
  - "http://my-etcd2"
  - "http://my-etcd3"
cloudProvider: aws
apiServerExtraArgs:
  apiserver-count: 3
apiServerCertSANs:
- "my-master-hostname1"
- "my-master-hostname2"
- "my-master-hostname3"
- "10.10.0.50"
- "10.10.0.51"
- "10.10.0.52"
- "127.0.0.1"
token: "my-kube-token"
tokenTTL: "0"

更多信息:https ://medium.com/jane-ai-engineering-blog/kubernetes-on-aws-6281e3a830fe


推荐阅读