BCI实例
更新时间:2023-07-13
创建实例
使用以下代码可以创建一个BCI实例。
// import "github.com/baidubce/bce-sdk-go/services/bci"
args := &CreateInstanceArgs{
// 保证请求幂等性
ClientToken: "random-uuid",
// BCI实例名称
Name: "instanceName",
// 可用区名称
ZoneName: "zoneC",
// 实例所属于的安全组Id
SecurityGroupIds: []string{"g-59gf44p4jmwe"},
// 实例所属的子网Id
SubnetIds: []string{"sbn-g463qx0aqu7q"},
// 实例重启策略
RestartPolicy: "Always",
// 弹性公网IP
EipIp: "106.13.234.xx",
// 自动创建EIP
AutoCreateEip: false,
// 弹性公网名称
EipName: "zwj-test-eip",
// EIP线路类型
EipRouteType: "BGP",
// 公网带宽,单位为Mbps
EipBandwidthInMbps: 1,
// 计费方式
EipBillingMethod: "ByTraffic",
// 实例所需的 GPU 资源型号
GPUType: "Nvidia A10 PCIE",
// 程序的缓冲时间,用于处理关闭之前的操作
TerminationGracePeriodSeconds: 0,
// 主机名称
HostName: "zwj-go-sdktest",
// 用户标签列表
Tags: []Tag{
{
TagKey: "appName",
TagValue: "zwj-test",
},
},
// 镜像仓库凭证信息
ImageRegistryCredentials: []ImageRegistryCredential{
{
Server: "docker.io/wywcoder",
UserName: "wywcoder",
Password: "Qaz123456",
},
},
// 业务容器组
Containers: []Container{
{
Name: "container01",
Image: "registry.baidubce.com/bci-zjm-public/ubuntu:18.04",
Memory: 0.5,
CPU: 0.25,
GPU: 0,
WorkingDir: "",
ImagePullPolicy: "IfNotPresent",
Commands: []string{"/bin/sh"},
Args: []string{"-c", "sleep 30000 && exit 0"},
VolumeMounts: []VolumeMount{
{
MountPath: "/usr/local/nfs",
ReadOnly: false,
Name: "nfs",
Type: "NFS",
},
{
MountPath: "/usr/local/share",
ReadOnly: false,
Name: "emptydir",
Type: "EmptyDir",
},
{
MountPath: "/config",
ReadOnly: false,
Name: "configfile",
Type: "ConfigFile",
},
},
Ports: []Port{
{
Port: 8099,
Protocol: "TCP",
},
},
EnvironmentVars: []Environment{
{
Key: "java",
Value: "/usr/local/jre",
},
},
LivenessProbe: &Probe{
InitialDelaySeconds: 0,
TimeoutSeconds: 0,
PeriodSeconds: 0,
SuccessThreshold: 0,
FailureThreshold: 0,
TerminationGracePeriodSeconds: 0,
Exec: &ExecAction{
Command: []string{"echo 0"},
},
},
Stdin: false,
StdinOnce: false,
Tty: false,
SecurityContext: &ContainerSecurityContext{},
},
},
// Init 容器
InitContainers: []Container{},
// 数据卷信息
Volume: &Volume{
Nfs: []NfsVolume{
{
Name: "nfs",
Server: "xxx.cfs.gz.baidubce.com",
Path: "/",
},
},
EmptyDir: []EmptyDirVolume{
{
Name: "emptydir",
},
},
ConfigFile: []ConfigFileVolume{
{
Name: "configfile",
ConfigFiles: []ConfigFileDetail{
{
Path: "podconfig",
File: "filenxx",
},
},
},
},
},
}
result, err := client.CreateInstance(args)
if err != nil {
fmt.Printf("CreateInstance error: %+v \n", err)
return
}
fmt.Printf("CreateInstance success, bci instance id: %+v \n", result.InstanceId)
注意:
- 保证请求幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。只支持ASCII字符,且不能超过64个字符。
- BCI实例名称,即容器组名称;支持长度为2~253个英文小写字母、数字或者连字符(-),不能以连接字符开始或结尾。如果填写大写字母,后台会自动转为小写。
- 实例重启策略。取值范围:Always:总是重启,Never:从不重启,OnFailure:失败时重启。默认值:Always。
- 自动创建EIP,并绑定到BCI实例上。只有当eipIp为空的情况下,此字段才生效。默认值为:false。
- EIP线路类型,包含标准BGP(BGP)和增强BGP(BGP_S),默认标准BGP。当autoCreateEip为true时,此字段才生效。默认值为:BGP。
- 公网带宽,单位为Mbps。对于预付费以及按使用带宽计费的后付费EIP,标准型BGP限制为1~500之间的整数,增强型BGP限制为100~5000之间的整数(代表带宽上限);对于按使用流量计费的后付费EIP,标准型BGP限制为1~200之间的整数(代表允许的带宽流量峰值)。如果填写浮点数会向下取整。当autoCreateEip为true时,此字段才生效。默认值为100。
- 计费方式,按流量(ByTraffic)、按带宽(ByBandwidth)、按增强95(ByPeak95)(只有共享带宽后付费支持)。当autoCreateEip为true时,此字段才生效。增强型BGP_S不支持按流量计费(ByTraffic),需要按带宽计费(ByBandwidth)。默认值为ByTraffic。
- 实例所需的 GPU 资源型号。目前仅支持:Nvidia A10 PCIE。
查询实例列表
使用以下代码可以查询BCI实例列表。
// import "github.com/baidubce/bce-sdk-go/services/bci"
args := &ListInstanceArgs{
// 查询关键字名称
KeywordType: "podId",
// 查询关键字值
keyword: "p-xxx",
// 表示下一个查询开始的marker,marker为空表示没有下一个
Marker: "",
// 每页包含的最大数量
MaxKeys: 5,
}
result, err := client.ListInstances(args)
fmt.Printf("ListInstances result: %+v, err: %+v \n", result, err)
注意:
- 查询关键字名称,取值范围:name、podId。
- 表示下一个查询开始的marker,marker为空表示没有下一个。说明:首次查询时无需设置该参数,后续查询的marker从返回结果中获取。
- 每页包含的最大数量,最大数量通常不超过1000,缺省值为10。maxKeys的取值范围:[1, 1000]之间的正整数。
查询实例详情
使用以下代码可以查询BCI实例详情。
// import "github.com/baidubce/bce-sdk-go/services/bci"
args := &GetInstanceArgs{
// BCI实例ID
InstanceId: "p-xxx",
}
result, err := client.GetInstance(args)
fmt.Printf("ListInstances result: %+v, err: %+v \n", result, err)
删除实例
使用以下代码可以删除BCI实例。
// import "github.com/baidubce/bce-sdk-go/services/bci"
args := &DeleteInstanceArgs{
// 待删除的BCI实例ID
InstanceId: "p-xxxx",
// 释放关联资源
RelatedReleaseFlag: true,
}
err := client.DeleteInstance(args)
fmt.Printf("DeleteInstance err: %+v\n", err)
注意:
- 释放关联资源,目前只有EIP资源,默认值为false。
批量删除实例
使用以下代码可以批量删除BCI实例。
// import "github.com/baidubce/bce-sdk-go/services/bci"
args := &BatchDeleteInstanceArgs{
// 待删除的BCI实例ID列表
InstanceIds: []string{"p-axxx", "p-bxxx"},
// 释放关联资源
RelatedReleaseFlag: true,
}
err := client.BatchDeleteInstance(args)
fmt.Printf("BatchDeleteInstance err: %+v\n", err)
注意:
- 释放关联资源,目前只有EIP资源,默认值为false。