连接到 AWS 上的 kubernetes 仅在通过 eksctl 创建集群时有效

connect to kubernetes on AWS only works when the cluster is created via eksctl

问题

在 aws 上创建 kubernetes 集群时使用 eksctl 和 AWS 管理控制台有什么区别?

喜欢引擎盖下到底发生了什么?

在这两种情况下都会创建集群,但只有在使用 eksctl 时,您才能在集群创建后连接到集群。

知道这里发生了什么吗?

如何复制

我在看AWS的官方教程。

本教程无效,集群已创建但您无法连接到它。如果您遵循它,当您到达步骤 2.3 并尝试该命令时,您会收到一个错误,提示您需要登录。

参考 1:https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html

但是,按照使用 eksctl 的 AWS 相邻教程的指导,一切正常。

参考文献 2:https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html

只需按照他们告诉您的步骤操作即可,一个有效,另一个无效:/

如何测试

1- 使用 AWS 管理控制台

命令

kubectl get svc

输出

error: You must be logged in to the server (Unauthorized)

2- 使用 eksctl

命令

kubectl get svc

输出

NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.100.0.1   <none>        443/TCP   6m13s

预期输出

预计

两者都应该允许我连接到 kubernetes 集群。

实际

如果我使用 eksctl 创建它,我只能连接到集群

修正案

深入研究 eksctl 后,我发现了这个教程:

https://eksctl.io/usage/creating-and-managing-clusters/

那里有一节说明如何使用配置文件创建集群。

因此,我将我的 IAM 角色 和我的 VPC 和子网 信息的值映射到文件并创建了集群,我最后能够连接,没有问题。

我可以推断出我的权限和配置是正确的。

我认为在使用 eksctl 命令时 IAM 角色以某种方式映射到内部组件,并且 AWS 管理控制台部分的文档中缺少此步骤。

我不是 100% 确定,但如果有人有意见,请分享。

好的,我解决了。 基本上我的错误是我在 ~/.aws/credentials.

下配置了不同的 IAM 用户