diff --git a/pkg/models/controllers/pods.go b/pkg/models/controllers/pods.go index fd929ad4b..709610c8c 100644 --- a/pkg/models/controllers/pods.go +++ b/pkg/models/controllers/pods.go @@ -27,6 +27,8 @@ import ( "k8s.io/apimachinery/pkg/labels" "k8s.io/client-go/informers" "k8s.io/client-go/tools/cache" + + "kubesphere.io/kubesphere/pkg/models/metrics" ) const inUse = "in_use_pods" @@ -264,6 +266,22 @@ func (ctl *PodCtl) ListWithConditions(conditions string, paging *Paging) (int, i listWithConditions(ctl.DB, &total, &object, &list, conditions, paging, order) + ch := make(chan metrics.PodMetrics) + + for index, _ := range list { + go metrics.GetSinglePodMetrics(list[index].Namespace, list[index].Name, ch) + } + + var resultMetrics = make(map[string]metrics.PodMetrics) + for range list { + podMetric := <-ch + resultMetrics[podMetric.PodName] = podMetric + } + + for index, _ := range list { + list[index].Metrics = resultMetrics[list[index].Name] + } + return total, list, nil } diff --git a/pkg/models/routes.go b/pkg/models/routes.go index a35275f70..781fa5b97 100644 --- a/pkg/models/routes.go +++ b/pkg/models/routes.go @@ -56,7 +56,7 @@ func GetRouter(namespace string) (*coreV1.Service, error) { serviceName := constants.IngressControllerPrefix + namespace opts := metaV1.ListOptions{ - LabelSelector: "app=kubesphere,component=ks-router,tier=backend", + LabelSelector: "app=kubesphere,component=ks-router,tier=backend,project=" + namespace, FieldSelector: "metadata.name=" + serviceName, } @@ -129,6 +129,9 @@ func CreateRouter(namespace string, routerType coreV1.ServiceType, annotations m service.Spec.Type = routerType service.Name = constants.IngressControllerPrefix + namespace + // Add project selector + service.Spec.Selector["project"] = namespace + service, err := k8sClient.CoreV1().Services(constants.IngressControllerNamespace).Create(service) if err != nil { glog.Error(err) @@ -140,6 +143,10 @@ func CreateRouter(namespace string, routerType coreV1.ServiceType, annotations m case *extensionsV1beta1.Deployment: deployment := obj.(*extensionsV1beta1.Deployment) deployment.Name = constants.IngressControllerPrefix + namespace + + // Add project label + deployment.Labels["project"] = namespace + deployment.Spec.Template.Spec.Containers[0].Args = append(deployment.Spec.Template.Spec.Containers[0].Args, "--watch-namespace="+namespace) glog.Info(deployment.Spec.Template.Spec.Containers[0].Args) deployment, err := k8sClient.ExtensionsV1beta1().Deployments(constants.IngressControllerNamespace).Create(deployment) @@ -171,7 +178,7 @@ func DeleteRouter(namespace string) (*coreV1.Service, error) { deleteOptions := metaV1.DeleteOptions{} listOptions := metaV1.ListOptions{ - LabelSelector: "app=kubesphere,component=kubesphere-router-gateway", + LabelSelector: "app=kubesphere,component=ks-router,tier=backend,project=" + namespace, FieldSelector: "metadata.name=" + serviceName} serviceList, err := k8sClient.CoreV1().Services(constants.IngressControllerNamespace).List(listOptions)