首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有至少一个专用子网的情况下,无法在VPC中创建群集。

在没有至少一个专用子网的情况下,无法在VPC中创建群集。
EN

Stack Overflow用户
提问于 2020-08-26 10:47:28
回答 2查看 1.4K关注 0票数 1

我正在尝试使用AWS CDK生成EKS集群。问题是:当我为不包含私有子网的EKS集群定义VPC时,cdk synth抛出下面的错误。

Vpc定义和用法:

代码语言:javascript
复制
cluster = eks.Cluster(self, "airflow-eks",
            endpoint_access=eks.EndpointAccess.PUBLIC,
            vpc=ec2.Vpc(self, "airflow-eks-vpc", cidr="172.16.0.0/22", max_azs=2,
                subnet_configuration=[
                    ec2.SubnetConfiguration(
                        name="subnet-1",
                        cidr_mask=27,
                        subnet_type=ec2.SubnetType.PUBLIC
                    ),
                    ec2.SubnetConfiguration(
                        name="subnet-2",
                        cidr_mask=27,
                        subnet_type=ec2.SubnetType.PUBLIC
                    )
                ]
            ),

错误是:

jsii.errors.JSIIError:在这个VPC中没有“私有”子网组。可用类型:公共

当我在集群定义中添加额外的私有子网时,如

代码语言:javascript
复制
ec2.SubnetConfiguration(
                        name="subnet-3",
                        cidr_mask=27,
                        subnet_type=ec2.SubnetType.PRIVATE
                    )

cdk synth工作得很好。

我想知道是否可以在不创建私有子网的情况下生成EKS集群,因为我根本不需要它们,而且使用私有子网需要额外的费用。在Terraform中,可以肯定地说,AWS CDK怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-26 20:12:25

不确定以下是一个根本原因,但这是有帮助的。因此,eks.Cluster init方法包含一个param - vpcSubnets,它是可选的,默认情况下包括所有公共和私有(!)亚尼斯.因此,当此参数被显式定义时,即

代码语言:javascript
复制
const cluster = new eks.Cluster(stack,'my-ts-eks',
    {
        vpc: eks_vpc,
        vpcSubnets:[
            {
                subnetType: ec2.SubnetType.PUBLIC,
                onePerAz: true
            }
        ],
        defaultCapacity: 0,
        version: eks.KubernetesVersion.V1_17,
    });

可以在没有专用子网的情况下创建EKS集群。

上面的例子是在TypeScript而不是Python中。 在Python中,它将类似于:

代码语言:javascript
复制
cluster = eks.Cluster(self, "airflow-eks",
           ...
            vpc_subnets = eks_vpc.select_subnets(subnet_type=ec2.SubnetType.PUBLIC, one_per_az=True).subnets,
          ...
        )
票数 2
EN

Stack Overflow用户

发布于 2021-05-06 12:06:02

您能通过将assignPublicIp: true添加到FargateServiceProps来尝试吗?有关更多细节,您可以参考集线器票#7062

在Java中,实现如下所示

代码语言:javascript
复制
ApplicationLoadBalancedFargateService.Builder.create(this, "FargateServiceName").cluster(cluster)
            .assignPublicIp(true)
            .cpu(512) // Default is 256
            .
            .
            .
            .build();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63595963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档