如何通过 CDK 创建带节点的 EKS 集群?
How do I create an EKS cluster with nodes via CDK?
我可以通过 CDK 在我想要的 VPC 上部署 Kubernetes Fargate 集群:
const vpc = ec2.Vpc.fromLookup(this, 'vpc', {
vpcId: 'vpc-abcdefg'
})
const cluster = new eks.FargateCluster(this, 'sample-eks', {
version: eks.KubernetesVersion.V1_21,
vpc,
})
cluster.addNodegroupCapacity('node-group-capacity', {
minSize: 2,
maxSize: 2,
})
但是,此集群中没有节点:
$ kubectl config get-clusters
NAME
minikube
arn:aws:eks:us-east-1:<account_number>:cluster/<cluster_name>
$ kubectl get nodes
No resources found
很困惑为什么会这样,因为我认为 addNodegroupCapacity
方法应该向集群添加节点。我想我可以通过 eksctl
添加节点 post-hoc,但我想知道是否可以通过 CDK 部署节点。
我的错误是没有向 aws-auth ConfigMap 添加具有足够权限的 role/user。这意味着集群没有创建节点的适当权限。以下解决了我的问题:
const role = iam.Role.fromRoleName(this, 'admin-role', '<my-admin-role>');
cluster.awsAuth.addRoleMapping(role, { groups: [ 'system:masters' ]});
<my-admin-role>
参数是我在登录 AWS 时承担的角色的名称。我通过 运行 aws sts get-caller-identity
找到了它,其中 returns 一个 JSON 文档提供了您担任的角色的 ARN。对我来说是 arn:aws:sts::<account-number>:assumed-role/<my-admin-role>/<my-username>
.
这也解决了另一个问题,因为我无法通过 kubectl
与集群交互。我会收到以下错误消息:error: You must be logged in to the server (Unauthorized)
。将我担任的角色添加到 aws-auth ConfigMap 后,我获得了通过终端访问集群的权限。
不知道为什么我在我使用的教程中没有看到这一点配置,如果有任何评论可以帮助我解释这一点,我将不胜感激。
我可以通过 CDK 在我想要的 VPC 上部署 Kubernetes Fargate 集群:
const vpc = ec2.Vpc.fromLookup(this, 'vpc', {
vpcId: 'vpc-abcdefg'
})
const cluster = new eks.FargateCluster(this, 'sample-eks', {
version: eks.KubernetesVersion.V1_21,
vpc,
})
cluster.addNodegroupCapacity('node-group-capacity', {
minSize: 2,
maxSize: 2,
})
但是,此集群中没有节点:
$ kubectl config get-clusters
NAME
minikube
arn:aws:eks:us-east-1:<account_number>:cluster/<cluster_name>
$ kubectl get nodes
No resources found
很困惑为什么会这样,因为我认为 addNodegroupCapacity
方法应该向集群添加节点。我想我可以通过 eksctl
添加节点 post-hoc,但我想知道是否可以通过 CDK 部署节点。
我的错误是没有向 aws-auth ConfigMap 添加具有足够权限的 role/user。这意味着集群没有创建节点的适当权限。以下解决了我的问题:
const role = iam.Role.fromRoleName(this, 'admin-role', '<my-admin-role>');
cluster.awsAuth.addRoleMapping(role, { groups: [ 'system:masters' ]});
<my-admin-role>
参数是我在登录 AWS 时承担的角色的名称。我通过 运行 aws sts get-caller-identity
找到了它,其中 returns 一个 JSON 文档提供了您担任的角色的 ARN。对我来说是 arn:aws:sts::<account-number>:assumed-role/<my-admin-role>/<my-username>
.
这也解决了另一个问题,因为我无法通过 kubectl
与集群交互。我会收到以下错误消息:error: You must be logged in to the server (Unauthorized)
。将我担任的角色添加到 aws-auth ConfigMap 后,我获得了通过终端访问集群的权限。
不知道为什么我在我使用的教程中没有看到这一点配置,如果有任何评论可以帮助我解释这一点,我将不胜感激。