Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove heapster support for kubectl #87498

Merged
merged 1 commit into from Mar 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 0 additions & 3 deletions staging/src/k8s.io/kubectl/pkg/cmd/top/BUILD
Expand Up @@ -43,9 +43,7 @@ go_test(
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/version:go_default_library",
"//staging/src/k8s.io/cli-runtime/pkg/genericclioptions:go_default_library",
"//staging/src/k8s.io/client-go/rest:go_default_library",
"//staging/src/k8s.io/client-go/rest/fake:go_default_library",
"//staging/src/k8s.io/client-go/testing:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/cmd/testing:go_default_library",
Expand All @@ -54,7 +52,6 @@ go_test(
"//staging/src/k8s.io/metrics/pkg/apis/metrics/v1alpha1:go_default_library",
"//staging/src/k8s.io/metrics/pkg/apis/metrics/v1beta1:go_default_library",
"//staging/src/k8s.io/metrics/pkg/client/clientset/versioned/fake:go_default_library",
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
],
)

Expand Down
57 changes: 17 additions & 40 deletions staging/src/k8s.io/kubectl/pkg/cmd/top/top_node.go
Expand Up @@ -44,40 +44,22 @@ type TopNodeOptions struct {
SortBy string
NoHeaders bool
NodeClient corev1client.CoreV1Interface
HeapsterOptions HeapsterTopOptions
Client *metricsutil.HeapsterMetricsClient
Printer *metricsutil.TopCmdPrinter
DiscoveryClient discovery.DiscoveryInterface
MetricsClient metricsclientset.Interface

genericclioptions.IOStreams
}

type HeapsterTopOptions struct {
Namespace string
Service string
Scheme string
Port string
}

func (o *HeapsterTopOptions) Bind(flags *pflag.FlagSet) {
if len(o.Namespace) == 0 {
o.Namespace = metricsutil.DefaultHeapsterNamespace
}
if len(o.Service) == 0 {
o.Service = metricsutil.DefaultHeapsterService
}
if len(o.Scheme) == 0 {
o.Scheme = metricsutil.DefaultHeapsterScheme
}
if len(o.Port) == 0 {
o.Port = metricsutil.DefaultHeapsterPort
}

flags.StringVar(&o.Namespace, "heapster-namespace", o.Namespace, "Namespace Heapster service is located in")
serathius marked this conversation as resolved.
Show resolved Hide resolved
flags.StringVar(&o.Service, "heapster-service", o.Service, "Name of Heapster service")
flags.StringVar(&o.Scheme, "heapster-scheme", o.Scheme, "Scheme (http or https) to connect to Heapster as")
flags.StringVar(&o.Port, "heapster-port", o.Port, "Port name in service to use")
func heapsterTopOptions(flags *pflag.FlagSet) {
flags.String("heapster-namespace", "kube-system", "Namespace Heapster service is located in")
flags.MarkDeprecated("heapster-namespace", "This flag is currently no-op and will be deleted.")
flags.String("heapster-service", "heapster", "Name of Heapster service")
flags.MarkDeprecated("heapster-service", "This flag is currently no-op and will be deleted.")
flags.String("heapster-scheme", "http", "Scheme (http or https) to connect to Heapster as")
flags.MarkDeprecated("heapster-scheme", "This flag is currently no-op and will be deleted.")
flags.String("heapster-port", "", "Port name in service to use")
flags.MarkDeprecated("heapster-port", "This flag is currently no-op and will be deleted.")
}

var (
Expand Down Expand Up @@ -117,8 +99,8 @@ func NewCmdTopNode(f cmdutil.Factory, o *TopNodeOptions, streams genericclioptio
cmd.Flags().StringVarP(&o.Selector, "selector", "l", o.Selector, "Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2)")
cmd.Flags().StringVar(&o.SortBy, "sort-by", o.Selector, "If non-empty, sort nodes list using specified field. The field can be either 'cpu' or 'memory'.")
cmd.Flags().BoolVar(&o.NoHeaders, "no-headers", o.NoHeaders, "If present, print output without headers")
heapsterTopOptions(cmd.Flags())

o.HeapsterOptions.Bind(cmd.Flags())
return cmd
}

Expand Down Expand Up @@ -146,7 +128,6 @@ func (o *TopNodeOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
}

o.NodeClient = clientset.CoreV1()
o.Client = metricsutil.NewHeapsterMetricsClient(clientset.CoreV1(), o.HeapsterOptions.Namespace, o.HeapsterOptions.Scheme, o.HeapsterOptions.Service, o.HeapsterOptions.Port)

o.Printer = metricsutil.NewTopCmdPrinter(o.Out)
return nil
Expand Down Expand Up @@ -181,17 +162,13 @@ func (o TopNodeOptions) RunTopNode() error {

metricsAPIAvailable := SupportedMetricsAPIVersionAvailable(apiGroups)

var metrics *metricsapi.NodeMetricsList
if metricsAPIAvailable {
metrics, err = getNodeMetricsFromMetricsAPI(o.MetricsClient, o.ResourceName, selector)
if err != nil {
return err
}
} else {
metrics, err = o.Client.GetNodeMetrics(o.ResourceName, selector.String())
if err != nil {
return err
}
if !metricsAPIAvailable {
return errors.New("Metrics API not available")
}

metrics, err := getNodeMetricsFromMetricsAPI(o.MetricsClient, o.ResourceName, selector)
if err != nil {
return err
}

if len(metrics.Items) == 0 {
Expand Down