Virtual Private Cloud(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