我试图在我的AWS账户上使用与Kubernetes源代码捆绑在Kubernetes/cluster/kube-up.sh的kube-up.sh
安装脚本设置Kubernetes集群
但是当我运行kube-up.sh时,我得到以下错误:
pranjal:~/go/src/github.com/GoogleCloudPlatform/kubernetes/cluster$ ./kube-up.sh
Starting cluster using os distro: ubuntu
Starting cluster using provider: aws
... calling verify-prereqs
... calling kube-up
Uploading to Amazon S3
Creating kubernetes-staging-6b790c161af2b2c39939b542c73b775a
make_bucket failed: s3://kubernetes-staging-6b790c161af2b2c39939b542c73b775
我确定我的工具无法读取我的AWS访问密钥和秘密。我将其存储在.aws/config中。我不确定我应该在哪里设置它,使它能够正确阅读和工作。
经过一番搜索,我想出了一个解决问题的办法。
很多AWS配置都在config-default.sh文件中。然而,没有选项来设置访问密钥ID,秘密访问密钥(这可能是有意义的,因为cluster/aws/config-default.sh文件是源代码的一部分,凭证应该保存在其他地方,在一个更安全的地方)
看到kubernetes/cluster/aws/util.sh源代码后,我意识到kubernetes实际上在内部调用aws命令行工具来更改aws基础设施。
因此,正确安装和配置AWS命令行工具将解决这个问题。
一旦我发出以下命令:
aws configure
并回答输入ID/Key的提示它将这些值保存到这个文件:
~/.aws/credentials
详情见此处
这解决了我的问题,kube-up.sh在我这样做之后运行得很好。
另一种方法是填充环境变量…将以下命令放入文件xxxxx
export AWS_ACCESS_KEY_ID=$(cat ${AWS_ACCOUNT_CONFIGDIR}/id)
export AWS_SECRET_ACCESS_KEY=$(cat ${AWS_ACCOUNT_CONFIGDIR}/key)
然后在调用kube-up.sh之前获取该文件
source xxxxx
kube-up.sh
在探测
之前首先查看上面的一对env变量。~/.aws/credentials
,我发现它更容易在不同的aws帐户之间切换