VPC环境

专有网络VPC(Virtual Private Cloud)是您基于阿里云构建的一个隔离的网络环境,专有网络之间逻辑上彻底隔离。更多详情,请参阅 什么是 VPC

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

创建集群时指定:

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

创建作业时指定:

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

2. 使用 Python SDK

创建集群时指定:

from batchcompute.resources import ClusterDescription

cluster_desc = ClusterDescription()
cluster_desc.Configs.Networks.VPC.CidrBlock = "192.168.0.1/16"
cluster_desc.Configs.Networks.VPC.VpcId = "vpc-xxyyzz"  # 如果想要使用用户VPC功能,需要设置此字段
...

创建作业时指定:

from batchcompute.resources import TaskDescription

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

3. 使用命令行工具

创建作业时指定:

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

创建集群时指定:

bcs cc myCluster --vpc_cidr_block 192.168.0.0/16
bcs cc myCluster --vpc_cidr_block 192.168.0.0/16 --vpc_id vpc-xxyyzz