【发布时间】:2022-01-26 13:43:56
【问题描述】:
我正在尝试在 AWS Elastic Kubernetes Service(EKS) 中托管应用程序。我已经使用 AWS 控制台配置了 EKS 集群。配置节点组并将节点添加到 EKS 集群,一切正常。
为了连接到集群,我启动了一个 EC2 实例 (Centos7) 并配置了以下内容:
1.安装了 docker、kubeadm、kubelet 和 kubectl。
2.已安装并配置 AWS Cli V2。
为了向 EKS 集群进行身份验证,我已将 IAM 角色附加到具有以下 AWS 托管策略的 EC2 实例:
1. AmazonEKSClusterPolicy
2. AmazonEKSWorkerNodePolicy
3. AmazonEC2ContainerRegistryReadOnly
4. AmazonEKS_CNI_Policy
5. AmazonElasticContainerRegistryPublicReadOnly
6. EC2InstanceProfileForImageBuilderECRContainerBuilds
7. AmazonElasticContainerRegistryPublicFullAccess
8. AWSAppRunnerServicePolicyForECRAccess
9. AmazonElasticContainerRegistryPublicPowerUser
10. SecretsManagerReadWrite
之后,我运行以下命令连接到 EKS 集群:
1. aws sts get-caller-identity
2. aws eks update-kubeconfig --name eks-cluster --region ap-south-1
当我运行 kubectl cluster-info 和 kubectl get nodes 时,我得到了以下信息:
但是,当我尝试运行 kubectl get namespaces 时,我收到以下错误:
当我尝试在 EKS 集群中创建命名空间时,我遇到了同样的错误。 不知道我在这里缺少什么。
来自服务器的错误(禁止):创建“namespace.yml”时出错:命名空间被禁止:用户“system:node:ip-172-31-43-129.ap-south-1.compute.internal”不能在集群范围内的 API 组“”中创建资源“命名空间”
作为替代方案,我尝试在 IAM 中创建具有管理权限的用户。创建了 AWS_ACCESS_KEY 和 AWS_SECRET_KEY_ID。使用 aws configure 在 EC2 实例中配置凭据。
运行以下命令:
1. aws sts get-caller-identity
2. aws eks update-kubeconfig --name eks-cluster --region ap-south-1
3. aws eks update-kubeconfig --name eks-cluster --region ap-south-1 --role-arn arn:aws:iam::XXXXXXXXXXXX:role/EKS-Cluster-Role
运行kubectl cluster-info --kubeconfig /home/centos/.kube/config后出现如下错误:
调用 AssumeRole 操作时发生错误 (AccessDenied):用户:arn:aws:iam::XXXXXXXXXXXX:user/XXXXX 无权执行:sts:AssumeRole on resource:arn:aws:iam::XXXXXXXXXXXX:角色/EKS-集群-角色
有谁知道如何解决这个问题??
【问题讨论】:
-
谁创建了集群?同一用户可以将您添加到 eks 中的集群中
标签: amazon-web-services kubernetes amazon-iam kubectl amazon-eks