feat(eci): 添加EIP注解支持并优化配置逻辑
All checks were successful
Virtual Kubelet Docker Build and Deploy / build-and-deploy (push) Successful in 4m40s

- 新增EIP相关注解支持:k8s.aliyun.com/eci-with-eip和k8s.aliyun.com/eci-eip-instanceid
- 添加EipInstanceId字段到CreateContainerGroupRequest结构体
- 优化EIP配置逻辑:当未配置EIP注解时默认启用自动创建EIP
- 移除硬编码的AutoCreateEip设置,改为基于注解的灵活配置
This commit is contained in:
D8D Developer
2025-09-08 12:22:14 +00:00
parent fe5cf87558
commit 4e4cbcf65f
2 changed files with 17 additions and 1 deletions

17
eci.go
View File

@@ -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)

View File

@@ -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"`