【问题标题】:Kubernetes Failed to Create PersistentVolumeClaim on AWS-EBSKubernetes 无法在 AWS-EBS 上创建 PersistentVolumeClaim
【发布时间】:2020-01-12 13:21:53
【问题描述】:

我使用kubeadm 设置了一个包含四个 EC2 实例的 Kubernetes 集群。 Kubernetes 集群工作正常,但当我尝试创建 PersistentVolumeClaim 时失败。

首先,我使用以下 YAML 创建了一个 StorageClass,它运行良好。

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"

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

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

收到以下错误消息:

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

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

kubectl get pv
No resources found.

有什么办法解决这个问题吗?

谢谢。

【问题讨论】:

  • 您是否尝试过在 Internet 上搜索“无法获取 AWS 云提供商。GetCloudProvider 返回了 <nil>”。如果您尝试这些搜索结果中的某些内容,有什么帮助吗?

标签: amazon-web-services kubernetes persistent-volumes


【解决方案1】:

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

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

【讨论】:

  • 如果我需要插入此功能以从已启动并运行的 Kubernetes 连接到 EBS 卷,该怎么办?我的平台已经有很多事情要做,我不想拆掉它并重新初始化它......有没有办法将云提供商添加到它?
猜你喜欢
  • 2019-04-27
  • 1970-01-01
  • 2021-12-08
  • 2018-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
  • 2016-05-02
相关资源
最近更新 更多