Kubernetes KOPS 集群创建问题 - 读取集群配置时出错
Kubernetes KOPS cluster creation issue - error reading cluster configuration
我在使用 KOPS 时无法创建 kubernetes 集群,我收到的错误消息是:
error reading cluster configuration "fraxxxx-k8s-devopsxxx": error reading s3://devopsxxx-k8s-learn.s3.amazonaws.com/fraxxx-k8s-devopsbcn/config: Could not retrieve location for AWS bucket devopsxxx-k8s-learn.s3.amazonaws.com
我确实创建了我的 s3 存储桶,虽然这是一个问题,比如没有创建存储桶,所以我浏览了我的 AWS 存储桶,它就在那里。
执行下面的命令对我来说总是显示错误:
$ sudo kops create cluster fraxxxx-k8s-devopsxxx --zones eu-west-3a --yes
error reading cluster configuration "fraxxxx-k8s-devopsxxx": error reading s3://devopsxxx-k8s-learn.s3.amazonaws.com/fraxxx-k8s-devopsbcn/config: Could not retrieve location for AWS bucket devopsxxx-k8s-learn.s3.amazonaws.com
我确实配置了我的访问密钥:
:~$ aws configure
AWS Access Key ID [****************IYFQ]:
AWS Secret Access Key [****************+SXJ]:
Default region name [eu-west-3]:
Default output format [None]:
甚至将密钥导出为环境变量:
~$ echo $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
XXXXXXXXXXXXXXXIYFQ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+SXJ
存储桶名称也作为 env var 导出,我通过 GUI 仔细检查了它,似乎没问题。
~$ echo $KOPS_STATE_STORE
s3://devxxxxxx-k8s-learn.s3.amazonaws.com
再次执行创建命令,但现在添加了 "state" 标志,但仍然失败。
$ sudo kops create cluster fraxxxx-k8s-devxxxxx --zones eu-west-3a --yes --state s3://devxxxxxx-k8s-learn.s3.amazonaws.com
error reading cluster configuration "fraxxxx-k8s-devxxxxxx": error reading s3://devxxxxxx-k8s-learn.s3.amazonaws.com/fraxxxx-k8s-devopsbcn/config: Could not retrieve location for AWS bucket devopsbcn-k8s-learn.s3.amazonaws.com
我希望 运行 创建命令并有一个工作的 kubernetes 集群。
回答自己
根据 AWS 官方文档,在 KOPS ver 1.6.1 之后,您需要:
1) 用于创建 kubernetes 集群的顶级域。
2) 具有特定权限的 IAM 用户,因为使用 root AWS Secret Keys 很复杂,或者现在受到限制。
我为我的 IAM 用户使用这些权限:
AmazonEC2FullAccess
IAMFullAccess
AmazonEC2ContainerRegistryFullAccess
AmazonS3FullAccess
AWSElasticBeanstalkFullAccess
AmazonVPCFullAccess
AmazonRoute53FullAccess
3) 当然,您应该使用来自您的 IAM 用户的访问密钥和密钥。
4) 然后是 AWS route53 托管区域。下面link中的步骤
5) 对我有用的 "create" 集群命令:
$ sudo kops create cluster --name cluster.kubernetes-aws.io --zones eu-west-3a --state s3://xxxxx-kops-state-store --master-size=t2.micro --yes
注意标志 --name
和 --state
请使用此文档来完成上述要求https://aws.amazon.com/blogs/compute/kubernetes-clusters-aws-kops/
除了上面列出的那些点之外,我还需要弄清楚一些事情,比如:
A) 将我的 api DNS 条目从我的 AWS route53 添加到 /etc/hosts
,即 api.cluster.kubernetes-aws.io 32.56.87.41,因为当我 运行 这个命令 kops validate cluster
,它试图在我的 PC 上本地查找集群,见下文:
错误
$ sudo kops validate cluster --name cluster.kubernetes-aws.io --state s3://xxxxx-kops-state-store
Validating cluster cluster.kubernetes-aws.io
unexpected error during validation: unable to resolve Kubernetes cluster API URL dns: lookup api.cluster.xxxxxxxxx.com on 127.0.0.53:53: no such host
对
$ sudo kops validate cluster --name cluster.kubernetes-aws.io --state s3://xxxxx-kops-state-store
[sudo] password for prometheus:
Validating cluster cluster.kubernetes-aws.io
INSTANCE GROUPS
NAME ROLE MACHINETYPE MIN MAX SUBNETS
master-eu-west-3a Master t2.micro 1 1 eu-west-3a
nodes Node t2.medium 2 2 eu-west-3a
NODE STATUS
NAME ROLE READY
ip-172-XX-XX-XX.eu-west-3.xxxxx.internal master True
VALIDATION ERRORS
KIND NAME MESSAGE
Machine i-05755f2ba8b9ebea0 machine "i-05755f2ba8b9ebea0" has not yet joined cluster
Machine i-05d0a12acf5434e26 machine "i-05d0a12acf5434e26" has not yet joined cluster
Pod kube-system/kube-dns-57dd96bb49-q6zwc kube-system pod "kube-dns-57dd96bb49-q6zwc" is pending
Pod kube-system/kube-dns-autoscaler-867b9fd49d-hgpf8 kube-system pod "kube-dns-autoscaler-867b9fd49d-hgpf8" is pending
B) 在尝试验证集群时再次注意标志 --name
和 --state
,否则会出错。
C) 重要的是,在创建集群时,您必须添加机器类型,否则会出现以下错误。
error assigning default machine type for masters: error finding default machine type: could not find a suitable supported instance type for the instance group "master-eu-west-3a" (type "Master") in region "eu-west-3"
D) 我的 s3 桶没有从环境变量(或类似的东西)中挑选出来,我只是用 --state
将它作为标志传递。对于C点和D点我创建集群成功如下:
$ sudo kops create cluster --name cluster.kubernetes-aws.io --zones eu-west-3a --state s3://xxxxx-kops-state-store --master-size=t2.micro --yes
我在使用 KOPS 时无法创建 kubernetes 集群,我收到的错误消息是:
error reading cluster configuration "fraxxxx-k8s-devopsxxx": error reading s3://devopsxxx-k8s-learn.s3.amazonaws.com/fraxxx-k8s-devopsbcn/config: Could not retrieve location for AWS bucket devopsxxx-k8s-learn.s3.amazonaws.com
我确实创建了我的 s3 存储桶,虽然这是一个问题,比如没有创建存储桶,所以我浏览了我的 AWS 存储桶,它就在那里。
执行下面的命令对我来说总是显示错误:
$ sudo kops create cluster fraxxxx-k8s-devopsxxx --zones eu-west-3a --yes
error reading cluster configuration "fraxxxx-k8s-devopsxxx": error reading s3://devopsxxx-k8s-learn.s3.amazonaws.com/fraxxx-k8s-devopsbcn/config: Could not retrieve location for AWS bucket devopsxxx-k8s-learn.s3.amazonaws.com
我确实配置了我的访问密钥:
:~$ aws configure
AWS Access Key ID [****************IYFQ]:
AWS Secret Access Key [****************+SXJ]:
Default region name [eu-west-3]:
Default output format [None]:
甚至将密钥导出为环境变量:
~$ echo $AWS_ACCESS_KEY_ID $AWS_SECRET_ACCESS_KEY
XXXXXXXXXXXXXXXIYFQ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX+SXJ
存储桶名称也作为 env var 导出,我通过 GUI 仔细检查了它,似乎没问题。
~$ echo $KOPS_STATE_STORE
s3://devxxxxxx-k8s-learn.s3.amazonaws.com
再次执行创建命令,但现在添加了 "state" 标志,但仍然失败。
$ sudo kops create cluster fraxxxx-k8s-devxxxxx --zones eu-west-3a --yes --state s3://devxxxxxx-k8s-learn.s3.amazonaws.com
error reading cluster configuration "fraxxxx-k8s-devxxxxxx": error reading s3://devxxxxxx-k8s-learn.s3.amazonaws.com/fraxxxx-k8s-devopsbcn/config: Could not retrieve location for AWS bucket devopsbcn-k8s-learn.s3.amazonaws.com
我希望 运行 创建命令并有一个工作的 kubernetes 集群。
回答自己 根据 AWS 官方文档,在 KOPS ver 1.6.1 之后,您需要:
1) 用于创建 kubernetes 集群的顶级域。
2) 具有特定权限的 IAM 用户,因为使用 root AWS Secret Keys 很复杂,或者现在受到限制。
我为我的 IAM 用户使用这些权限:
AmazonEC2FullAccess
IAMFullAccess
AmazonEC2ContainerRegistryFullAccess
AmazonS3FullAccess
AWSElasticBeanstalkFullAccess
AmazonVPCFullAccess
AmazonRoute53FullAccess
3) 当然,您应该使用来自您的 IAM 用户的访问密钥和密钥。
4) 然后是 AWS route53 托管区域。下面link中的步骤
5) 对我有用的 "create" 集群命令:
$ sudo kops create cluster --name cluster.kubernetes-aws.io --zones eu-west-3a --state s3://xxxxx-kops-state-store --master-size=t2.micro --yes
注意标志 --name
和 --state
请使用此文档来完成上述要求https://aws.amazon.com/blogs/compute/kubernetes-clusters-aws-kops/
除了上面列出的那些点之外,我还需要弄清楚一些事情,比如:
A) 将我的 api DNS 条目从我的 AWS route53 添加到 /etc/hosts
,即 api.cluster.kubernetes-aws.io 32.56.87.41,因为当我 运行 这个命令 kops validate cluster
,它试图在我的 PC 上本地查找集群,见下文:
错误
$ sudo kops validate cluster --name cluster.kubernetes-aws.io --state s3://xxxxx-kops-state-store
Validating cluster cluster.kubernetes-aws.io
unexpected error during validation: unable to resolve Kubernetes cluster API URL dns: lookup api.cluster.xxxxxxxxx.com on 127.0.0.53:53: no such host
对
$ sudo kops validate cluster --name cluster.kubernetes-aws.io --state s3://xxxxx-kops-state-store
[sudo] password for prometheus:
Validating cluster cluster.kubernetes-aws.io
INSTANCE GROUPS
NAME ROLE MACHINETYPE MIN MAX SUBNETS
master-eu-west-3a Master t2.micro 1 1 eu-west-3a
nodes Node t2.medium 2 2 eu-west-3a
NODE STATUS
NAME ROLE READY
ip-172-XX-XX-XX.eu-west-3.xxxxx.internal master True
VALIDATION ERRORS
KIND NAME MESSAGE
Machine i-05755f2ba8b9ebea0 machine "i-05755f2ba8b9ebea0" has not yet joined cluster
Machine i-05d0a12acf5434e26 machine "i-05d0a12acf5434e26" has not yet joined cluster
Pod kube-system/kube-dns-57dd96bb49-q6zwc kube-system pod "kube-dns-57dd96bb49-q6zwc" is pending
Pod kube-system/kube-dns-autoscaler-867b9fd49d-hgpf8 kube-system pod "kube-dns-autoscaler-867b9fd49d-hgpf8" is pending
B) 在尝试验证集群时再次注意标志 --name
和 --state
,否则会出错。
C) 重要的是,在创建集群时,您必须添加机器类型,否则会出现以下错误。
error assigning default machine type for masters: error finding default machine type: could not find a suitable supported instance type for the instance group "master-eu-west-3a" (type "Master") in region "eu-west-3"
D) 我的 s3 桶没有从环境变量(或类似的东西)中挑选出来,我只是用 --state
将它作为标志传递。对于C点和D点我创建集群成功如下:
$ sudo kops create cluster --name cluster.kubernetes-aws.io --zones eu-west-3a --state s3://xxxxx-kops-state-store --master-size=t2.micro --yes