全部产品
阿里云办公

VPC支持

更新时间:2018-10-27 17:55:28

专有网络 VPC(Virtual Private Cloud)是您基于阿里云构建的一个隔离的网络环境,专有网络之间逻辑上彻底隔离,了解专有网络更多细节

BatchCompute 在创建集群或作业的时候,可以指定集群创建在 VPC 环境内(和原有经典网络配置互斥),然后用户程序在 VPC 内的集群中运行访问其他云产品的程序时需要使用该云产品在 VPC 环境内的入口,可以参考相关云产品的文档,或者工单询问我们。

集群描述中的 Configs.Networks.VPC 内的 CidrBlock 字段标识了用户想要设置的 BatchCompute 集群所在的网段,即,集群内的实例均在该网段内。VPC 的网段仅支持私网网段,即 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16 以及其子网,因为下层对 VSwitch 的划分限制,要求网段掩码在12-24,所以,用户在设置 CidrBlock 字段需要选择 10.0.0.0/12 - 10.0.0.0/24、172.16.0.0/12 - 172.16.0.0/24、192.168.0.0/16 - 192.168.0.0/24 中包含的网段,否则会造成集群无法正常创建。

也增加了支持在用户 VPC 内创建集群的功能,这个功能允许用户指定自己账号下的 VPC,会在用户账号下的 VPC 内去创建集群,这样的好处是,方便集群与用户账号下已有的云服务资源进行连通,例如 NAS,RDS 等。在使用这个功能的时候需要配置除了上述 Configs.Networks.VPC.CidrBlock 字段外,还需要配置 Configs.Networks.VPC.VpcId 字段用来标识用户账号下的 VPC 的 VpcId。这里需要注意的是,在集群创建过程中,我们会在用户指定的 VPC 内创建 VSwitch 等资源,用户需要保证在集群存在期间不要随意操作这些自动创建出的 VSwitch,否则会影响集群的正常运行。另外,在这种模式下,多个集群可以共享同一个 CIDR 网段(即多个集群或者作业可以设置同一个网段,它们共享这个网段内的网络资源),但是用户需要注意的是,在这个 CIDR 网段内不要创建 VSwitch 等资源。

BatchCompute 集群 VPC 环境下不支持 bcs 实例规格(格式如 bcs.xx.xxx)。

以下样例请更新到最新版本的SDK或工具再使用。

1. 使用 Java SDK

创建集群时指定:

  1. ClusterDescription clusterDescription = new ClusterDescription();
  2. Configs cfgs = new Configs();
  3. Networks nw = new Networks();
  4. VPC vpc = new VPC();
  5. vpc.setCidrBlock("192.168.0.1/16"); //设置网段
  6. vpc.setVpcId("vpc-xxyyzz"); //如果想要使用用户 VPC 功能,需要设置此字段
  7. nw.setVpc(vpc);
  8. cfgs.setNetworks(nw);
  9. clusterDescription.setConfigs(cfgs);
  10. ...

创建作业时指定:

  1. TaskDescription taskDescription = new TaskDescription();
  2. Configs cfgs = new Configs();
  3. Networks nw = new Networks();
  4. VPC vpc = new VPC();
  5. vpc.setCidrBlock("192.168.0.1/16"); //设置网段
  6. vpc.setVpcId("vpc-xxyyzz"); //如果想要使用用户 VPC 功能,需要设置此字段
  7. nw.setVpc(vpc);
  8. cfgs.setNetworks(nw);
  9. AutoCluster autoCluster = new AutoCluster();
  10. taskDescription.setAutoCluster(autoCluster);
  11. ...

2. 使用 Python SDK

创建集群时指定:

  1. from batchcompute.resources import ClusterDescription
  2. cluster_desc = ClusterDescription()
  3. cluster_desc.Configs.Networks.VPC.CidrBlock = "192.168.0.1/16"
  4. cluster_desc.Configs.Networks.VPC.VpcId = "vpc-xxyyzz" # 如果想要使用用户VPC功能,需要设置此字段
  5. ...

创建作业时指定:

  1. from batchcompute.resources import TaskDescription
  2. task_desc = TaskDescription()
  3. task_desc.AutoCluster.Configs.Networks.VPC.CidrBlock = "192.168.0.1/16"
  4. task_desc.AutoCluster.Configs.Networks.VPC.VpcId = "vpc-xxyyzz" # 如果想要使用用户 VPC 功能,需要设置此字段
  5. ...

3. 使用命令行工具

创建作业时指定:

  1. bcs sub "python test.py" --vpc_cidr_block 192.168.0.0/16
  2. bcs sub "python test.py" --vpc_cidr_block 192.168.0.0/16 --vpc_id vpc-xxyyzz

创建集群时指定:

  1. bcs cc myCluster --vpc_cidr_block 192.168.0.0/16
  2. bcs cc myCluster --vpc_cidr_block 192.168.0.0/16 --vpc_id vpc-xxyyzz