Kubernetes 与 AWS 弹性块存储

Kubernetes with AWS Elastic Block Storage

我们正在尝试使用 AWS Elastic Block Store (EBS) 在 AWS 实例中配置 kubernetes RC。这是我们控制器 yaml 文件的关键部分 -

      volumeMounts:
        - mountPath: "/opt/phabricator/repo"
          name: ebsvol
  volumes:
    -
      name: ebsvol
      awsElasticBlockStore:
        volumeID: aws://us-west-2a/vol-*****
        fsType: ext4

我们的 rc 可以启动 pod 并且在没有将它安装到 AWS EBS 的情况下工作正常但是在 AWS EBS 中安装卷它给我们 -

Fri, 11 Sep 2015 11:29:14 +0000 Fri, 11 Sep 2015 11:29:34 +0000 3   {kubelet 172.31.24.103}         failedMount Unable to mount volumes for pod "phabricator-controller-zvg7z_default": error listing AWS instances: NoCredentialProviders: no valid providers in chain
  Fri, 11 Sep 2015 11:29:14 +0000   Fri, 11 Sep 2015 11:29:34 +0000 3   {kubelet 172.31.24.103}         failedSync  Error syncing pod, skipping: error listing AWS instances: NoCredentialProviders: no valid providers in chain

我们在 .aws 目录中有一个包含适当凭据的凭据文件。但它不起作用。 我们错过了什么吗?是配置问题吗?

Kubectl 版本:1.0.4 和 1.0.5(都试过)

我们开了一个问题来讨论这个问题: https://github.com/kubernetes/kubernetes/issues/13858

推荐的方法是使用 IAM 实例配置文件。 kube-up 确实为您配置了这个,如果您不使用 kube-up,我建议您查看它以模拟它的作用!

尽管我们最近确实合并了对使用 .aws 凭证文件的支持,但我认为它没有被反向移植到任何版本中,而且这并不是我(个人)推荐的方式。

听起来你没有使用 kube-up;如果你可以使用它,你可能会发现它更容易(而且我很想知道是否有某些原因你不能或不想使用 kube-up,因为我个人正在研究一个我希望会遇到的替代方案每个人的需要!)

我也很想知道 IAM 实例配置文件是否出于某种原因不适合您。