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