diff --git a/eci.go b/eci.go index 48e9346..07940ff 100644 --- a/eci.go +++ b/eci.go @@ -190,12 +190,27 @@ func (p *ECIProvider) CreatePod(ctx context.Context, pod *v1.Pod) error { if specs, exists := pod.Annotations["k8s.aliyun.com/eci-use-specs"]; exists { request.InstanceType = specs } + + // 解析EIP注解 + if withEip, exists := pod.Annotations["k8s.aliyun.com/eci-with-eip"]; exists { + if autoCreate, err := strconv.ParseBool(withEip); err == nil { + request.AutoCreateEip = requests.Boolean(strconv.FormatBool(autoCreate)) + } + } + + if eipInstanceId, exists := pod.Annotations["k8s.aliyun.com/eci-eip-instanceid"]; exists { + request.EipInstanceId = eipInstanceId + } + } + + // 如果没有配置EIP注解,默认启用自动创建EIP + if request.AutoCreateEip == "" && request.EipInstanceId == "" { + request.AutoCreateEip = requests.Boolean(strconv.FormatBool(true)) } // 添加抢占式实例策略配置 request.SpotStrategy = "SpotAsPriceGo" // 设置抢占式实例策略为按价格竞价 //request.SpotDuration = 0 // 设置抢占式实例持续时间为0(非定时抢占) - request.AutoCreateEip = requests.Boolean(strconv.FormatBool(true)) // // get containers containers, err := p.getContainers(pod, false) diff --git a/eci/create_container_group.go b/eci/create_container_group.go index 5c9d31f..52c1205 100644 --- a/eci/create_container_group.go +++ b/eci/create_container_group.go @@ -90,6 +90,7 @@ type CreateContainerGroupRequest struct { Volumes []Volume `position:"Query" name:"Volume" type:"Repeated"` ContainerGroupName string `position:"Query" name:"ContainerGroupName"` AutoCreateEip requests.Boolean `position:"Query" name:"AutoCreateEip"` + EipInstanceId string `position:"Query" name:"EipInstanceId"` ZoneId string `position:"Query" name:"ZoneId"` SpotStrategy string `position:"Query" name:"SpotStrategy"` InstanceType string `position:"Query" name:"InstanceType"`