diff --git a/client/api/cloud.go b/client/api/cloud.go index 665dadf..d4fb15d 100644 --- a/client/api/cloud.go +++ b/client/api/cloud.go @@ -48,7 +48,7 @@ func (c *cloudApi) CreateContainerHandler(ctx *gin.Context) { fmt.Println(c.service) createContainer, err := c.service.CreateContainer(ctx.Request.Context(), pfId, ¶m) if err != nil { - model.Response(ctx, http.StatusInternalServerError, err, nil) + model.Response(ctx, http.StatusInternalServerError, err.Error(), nil) return } model.Response(ctx, http.StatusOK, "success", createContainer) diff --git a/client/main.go b/client/main.go index 130f55f..11c5088 100644 --- a/client/main.go +++ b/client/main.go @@ -41,12 +41,12 @@ func main() { // zap.L().Fatal("集群初始化失败", zap.Error(err)) //} // 初始化智算集群连接 - aiSvc, err := initialize.InitAICluster(cfg) - if err != nil { - initialize.Panic("Server started failed: %s", err) - return - } - api.AiApi.RegisterSvc(aiSvc) + //aiSvc, err := initialize.InitAICluster(cfg) + //if err != nil { + // initialize.Panic("Server started failed: %s", err) + // return + //} + //api.AiApi.RegisterSvc(aiSvc) // 初始化通算集群连接 cloudSvc, err := initialize.InitCloudCluster(cfg) if err != nil { diff --git a/cloud/container/option.go b/cloud/container/option.go index ef430f6..06c6d46 100644 --- a/cloud/container/option.go +++ b/cloud/container/option.go @@ -2,6 +2,7 @@ package container type CreateParam struct { ContainerGroupName string `json:"containerGroupName"` + Description string `json:"description,omitempty"` Name string `json:"name"` Image string `json:"image"` Cpu string `json:"cpu,omitempty"` diff --git a/participant/eci/model/container.go b/participant/eci/model/container.go index da0e9a1..51fbd78 100644 --- a/participant/eci/model/container.go +++ b/participant/eci/model/container.go @@ -6,6 +6,7 @@ import ( ) type CreateContainerParam struct { + Description string `json:"description,omitempty"` RegionId string `json:"regionId"` ContainerGroupName string `json:"containerGroupName"` Containers *[]eci.CreateContainerGroupContainer `json:"containers"` diff --git a/participant/k8s/apis/container.go b/participant/k8s/apis/container.go index 04667f4..91dce9e 100644 --- a/participant/k8s/apis/container.go +++ b/participant/k8s/apis/container.go @@ -17,7 +17,7 @@ func CreateContainer(ctx *gin.Context) { client := common.GetK8sClient() err := service.CreateContainer(client, ¶m) if err != nil { - model.Response(ctx, 500, common.INVOKEERROR, err) + model.Response(ctx, 500, common.INVOKEERROR, err.Error()) return } diff --git a/participant/k8s/k8s.go b/participant/k8s/k8s.go index 25977ab..84c4356 100644 --- a/participant/k8s/k8s.go +++ b/participant/k8s/k8s.go @@ -90,10 +90,12 @@ func (c *Container) Create(ctx context.Context, param *container.CreateParam) (i return nil, errors.New("ContainerGroupName is required") } cParam := model.CreateContainerParam{ + Description: param.Description, Container: model.Container{ Name: param.Name, Image: param.Image, Args: param.Args, + Limits: struct { Cpu string `json:"cpu,omitempty"` Memory string `json:"memory,omitempty"` diff --git a/participant/k8s/model/container.go b/participant/k8s/model/container.go index 2e3dfa7..0f27752 100644 --- a/participant/k8s/model/container.go +++ b/participant/k8s/model/container.go @@ -4,6 +4,7 @@ type CreateContainerParam struct { ContainerGroupName string `json:"containerGroupName"` Container Container `json:"Container"` MountPath string `json:"mountPath,omitempty"` + Description string `json:"description,omitempty"` } type Container struct { Name string `json:"name"` diff --git a/participant/k8s/service/container.go b/participant/k8s/service/container.go index d7b1202..29bf529 100644 --- a/participant/k8s/service/container.go +++ b/participant/k8s/service/container.go @@ -2,10 +2,11 @@ package service import ( "context" + "errors" "fmt" "gitlink.org.cn/JointCloud/pcm-participant-k8s/model" v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/errors" + k8sErr "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" @@ -13,12 +14,13 @@ import ( func CreateContainer(client *kubernetes.Clientset, param *model.CreateContainerParam) error { // 查询pod是否存在 - _, err := client.CoreV1().Pods("default").Get(context.TODO(), param.ContainerGroupName, metav1.GetOptions{}) - if err == nil { + queryPod, err := client.CoreV1().Pods("default").Get(context.TODO(), param.ContainerGroupName, metav1.GetOptions{}) + if err != nil && !k8sErr.IsNotFound(err) { return err } - if !errors.IsNotFound(err) { - return err + + if queryPod.Name != "" { + return errors.New("pod already exists.") } // 创建svc if param.Container.ContainerPort.Port != 0 { @@ -30,6 +32,7 @@ func CreateContainer(client *kubernetes.Clientset, param *model.CreateContainerP // 创建 Pod 对象 pod := &v1.Pod{ ObjectMeta: metav1.ObjectMeta{ + Name: param.ContainerGroupName, // Pod 名称(必选) Labels: map[string]string{ "app": param.ContainerGroupName,