mirror of
https://github.com/kubernetes-sigs/prometheus-adapter.git
synced 2026-04-06 01:38:10 +00:00
go.mod: bump metrics-server
Include a fix to the NodeMetrics and PodMetrics APIs to match k8s conventions. - NodeMetrics and PodMetrics now have labels as they can be filtered by them - Field selector is now applied to NodeMetrics and PodMetrics instead of Nodes and Pods Signed-off-by: Damien Grisonnet <dgrisonn@redhat.com>
This commit is contained in:
parent
e0ddb886a7
commit
6d8a82f423
5 changed files with 63 additions and 29 deletions
2
go.mod
2
go.mod
|
|
@ -23,7 +23,7 @@ require (
|
||||||
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6
|
k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6
|
||||||
k8s.io/metrics v0.19.3
|
k8s.io/metrics v0.19.3
|
||||||
k8s.io/sample-apiserver v0.18.5
|
k8s.io/sample-apiserver v0.18.5
|
||||||
sigs.k8s.io/metrics-server v0.3.7-0.20201028092756-2a1d1385123b
|
sigs.k8s.io/metrics-server v0.4.1-0.20201126131427-ebfc64a74ae4
|
||||||
)
|
)
|
||||||
|
|
||||||
// forced by the inclusion of sigs.k8s.io/metrics-server's use of this in their go.mod
|
// forced by the inclusion of sigs.k8s.io/metrics-server's use of this in their go.mod
|
||||||
|
|
|
||||||
4
go.sum
4
go.sum
|
|
@ -725,8 +725,8 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7 h1:uuHDyjllyzRyCI
|
||||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0=
|
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.7/go.mod h1:PHgbrJT7lCHcxMU+mDHEm+nx46H4zuuHZkDP6icnhu0=
|
||||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9 h1:rusRLrDhjBp6aYtl9sGEvQJr6faoHoDLd0YcUBTZguI=
|
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9 h1:rusRLrDhjBp6aYtl9sGEvQJr6faoHoDLd0YcUBTZguI=
|
||||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0=
|
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9/go.mod h1:dzAXnQbTRyDlZPJX2SUPEqvnB+j7AJjtlox7PEwigU0=
|
||||||
sigs.k8s.io/metrics-server v0.3.7-0.20201028092756-2a1d1385123b h1:k12QeCO75SLSkSwHNlZuj42D69i851Lx2qjGEtubB2M=
|
sigs.k8s.io/metrics-server v0.4.1-0.20201126131427-ebfc64a74ae4 h1:7xwQXqnQnBCVgx0ywo/1g0A3HWsHNMDU7unQv9v8oX4=
|
||||||
sigs.k8s.io/metrics-server v0.3.7-0.20201028092756-2a1d1385123b/go.mod h1:799PonU8Bq6Yj4ZXBhZxRt86C8Zv9tvrNypHVrduK/I=
|
sigs.k8s.io/metrics-server v0.4.1-0.20201126131427-ebfc64a74ae4/go.mod h1:799PonU8Bq6Yj4ZXBhZxRt86C8Zv9tvrNypHVrduK/I=
|
||||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
|
sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
|
||||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E=
|
sigs.k8s.io/structured-merge-diff/v3 v3.0.0 h1:dOmIZBMfhcHS09XZkMyUgkq5trg3/jRyJYFZUiaOp8E=
|
||||||
sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
|
sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
|
||||||
|
|
|
||||||
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
|
|
@ -808,7 +808,7 @@ k8s.io/utils/trace
|
||||||
# sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9
|
# sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.9
|
||||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client
|
sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client
|
||||||
sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client
|
sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client
|
||||||
# sigs.k8s.io/metrics-server v0.3.7-0.20201028092756-2a1d1385123b
|
# sigs.k8s.io/metrics-server v0.4.1-0.20201126131427-ebfc64a74ae4
|
||||||
sigs.k8s.io/metrics-server/pkg/api
|
sigs.k8s.io/metrics-server/pkg/api
|
||||||
# sigs.k8s.io/structured-merge-diff/v4 v4.0.1
|
# sigs.k8s.io/structured-merge-diff/v4 v4.0.1
|
||||||
sigs.k8s.io/structured-merge-diff/v4/fieldpath
|
sigs.k8s.io/structured-merge-diff/v4/fieldpath
|
||||||
|
|
|
||||||
67
vendor/sigs.k8s.io/metrics-server/pkg/api/node.go
generated
vendored
67
vendor/sigs.k8s.io/metrics-server/pkg/api/node.go
generated
vendored
|
|
@ -84,41 +84,53 @@ func (m *nodeMetrics) List(ctx context.Context, options *metainternalversion.Lis
|
||||||
klog.Error(errMsg)
|
klog.Error(errMsg)
|
||||||
return &metrics.NodeMetricsList{}, errMsg
|
return &metrics.NodeMetricsList{}, errMsg
|
||||||
}
|
}
|
||||||
if options != nil && options.FieldSelector != nil {
|
|
||||||
newNodes := make([]*v1.Node, 0, len(nodes))
|
|
||||||
fields := make(fields.Set, 2)
|
|
||||||
for _, node := range nodes {
|
|
||||||
for k := range fields {
|
|
||||||
delete(fields, k)
|
|
||||||
}
|
|
||||||
fieldsSet := generic.AddObjectMetaFieldsSet(fields, &node.ObjectMeta, true)
|
|
||||||
if !options.FieldSelector.Matches(fieldsSet) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
newNodes = append(newNodes, node)
|
|
||||||
}
|
|
||||||
nodes = newNodes
|
|
||||||
}
|
|
||||||
|
|
||||||
names := make([]string, len(nodes))
|
|
||||||
for i, node := range nodes {
|
|
||||||
names[i] = node.Name
|
|
||||||
}
|
|
||||||
// maintain the same ordering invariant as the Kube API would over nodes
|
// maintain the same ordering invariant as the Kube API would over nodes
|
||||||
sort.Strings(names)
|
sort.Slice(nodes, func(i, j int) bool {
|
||||||
|
return nodes[i].Name < nodes[j].Name
|
||||||
|
})
|
||||||
|
|
||||||
metricsItems, err := m.getNodeMetrics(names...)
|
metricsItems, err := m.getNodeMetrics(nodes...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errMsg := fmt.Errorf("Error while fetching node metrics for selector %v: %v", labelSelector, err)
|
errMsg := fmt.Errorf("Error while fetching node metrics for selector %v: %v", labelSelector, err)
|
||||||
klog.Error(errMsg)
|
klog.Error(errMsg)
|
||||||
return &metrics.NodeMetricsList{}, errMsg
|
return &metrics.NodeMetricsList{}, errMsg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if options != nil && options.FieldSelector != nil {
|
||||||
|
newMetrics := make([]metrics.NodeMetrics, 0, len(metricsItems))
|
||||||
|
fields := make(fields.Set, 2)
|
||||||
|
for _, metric := range metricsItems {
|
||||||
|
for k := range fields {
|
||||||
|
delete(fields, k)
|
||||||
|
}
|
||||||
|
fieldsSet := generic.AddObjectMetaFieldsSet(fields, &metric.ObjectMeta, false)
|
||||||
|
if !options.FieldSelector.Matches(fieldsSet) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
newMetrics = append(newMetrics, metric)
|
||||||
|
}
|
||||||
|
metricsItems = newMetrics
|
||||||
|
}
|
||||||
|
|
||||||
return &metrics.NodeMetricsList{Items: metricsItems}, nil
|
return &metrics.NodeMetricsList{Items: metricsItems}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *nodeMetrics) Get(ctx context.Context, name string, opts *metav1.GetOptions) (runtime.Object, error) {
|
func (m *nodeMetrics) Get(ctx context.Context, name string, opts *metav1.GetOptions) (runtime.Object, error) {
|
||||||
nodeMetrics, err := m.getNodeMetrics(name)
|
node, err := m.nodeLister.Get(name)
|
||||||
|
if err != nil {
|
||||||
|
errMsg := fmt.Errorf("Error while getting node %v: %v", name, err)
|
||||||
|
klog.Error(errMsg)
|
||||||
|
if errors.IsNotFound(err) {
|
||||||
|
// return not-found errors directly
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, errMsg
|
||||||
|
}
|
||||||
|
if node == nil {
|
||||||
|
return nil, errors.NewNotFound(m.groupResource, name)
|
||||||
|
}
|
||||||
|
nodeMetrics, err := m.getNodeMetrics(node)
|
||||||
if err == nil && len(nodeMetrics) == 0 {
|
if err == nil && len(nodeMetrics) == 0 {
|
||||||
err = fmt.Errorf("no metrics known for node %q", name)
|
err = fmt.Errorf("no metrics known for node %q", name)
|
||||||
}
|
}
|
||||||
|
|
@ -188,18 +200,23 @@ func addNodeMetricsToTable(table *metav1beta1.Table, nodes ...metrics.NodeMetric
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *nodeMetrics) getNodeMetrics(names ...string) ([]metrics.NodeMetrics, error) {
|
func (m *nodeMetrics) getNodeMetrics(nodes ...*v1.Node) ([]metrics.NodeMetrics, error) {
|
||||||
|
names := make([]string, len(nodes))
|
||||||
|
for i, node := range nodes {
|
||||||
|
names[i] = node.Name
|
||||||
|
}
|
||||||
timestamps, usages := m.metrics.GetNodeMetrics(names...)
|
timestamps, usages := m.metrics.GetNodeMetrics(names...)
|
||||||
res := make([]metrics.NodeMetrics, 0, len(names))
|
res := make([]metrics.NodeMetrics, 0, len(names))
|
||||||
|
|
||||||
for i, name := range names {
|
for i, node := range nodes {
|
||||||
if usages[i] == nil {
|
if usages[i] == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
res = append(res, metrics.NodeMetrics{
|
res = append(res, metrics.NodeMetrics{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
Name: name,
|
Name: node.Name,
|
||||||
CreationTimestamp: metav1.NewTime(myClock.Now()),
|
CreationTimestamp: metav1.NewTime(myClock.Now()),
|
||||||
|
Labels: node.Labels,
|
||||||
},
|
},
|
||||||
Timestamp: metav1.NewTime(timestamps[i].Timestamp),
|
Timestamp: metav1.NewTime(timestamps[i].Timestamp),
|
||||||
Window: metav1.Duration{Duration: timestamps[i].Window},
|
Window: metav1.Duration{Duration: timestamps[i].Window},
|
||||||
|
|
|
||||||
17
vendor/sigs.k8s.io/metrics-server/pkg/api/pod.go
generated
vendored
17
vendor/sigs.k8s.io/metrics-server/pkg/api/pod.go
generated
vendored
|
|
@ -120,6 +120,22 @@ func (m *podMetrics) List(ctx context.Context, options *metainternalversion.List
|
||||||
return &metrics.PodMetricsList{}, errMsg
|
return &metrics.PodMetricsList{}, errMsg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if options != nil && options.FieldSelector != nil {
|
||||||
|
newMetrics := make([]metrics.PodMetrics, 0, len(metricsItems))
|
||||||
|
fields := make(fields.Set, 2)
|
||||||
|
for _, metric := range metricsItems {
|
||||||
|
for k := range fields {
|
||||||
|
delete(fields, k)
|
||||||
|
}
|
||||||
|
fieldsSet := generic.AddObjectMetaFieldsSet(fields, &metric.ObjectMeta, true)
|
||||||
|
if !options.FieldSelector.Matches(fieldsSet) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
newMetrics = append(newMetrics, metric)
|
||||||
|
}
|
||||||
|
metricsItems = newMetrics
|
||||||
|
}
|
||||||
|
|
||||||
return &metrics.PodMetricsList{Items: metricsItems}, nil
|
return &metrics.PodMetricsList{Items: metricsItems}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -246,6 +262,7 @@ func (m *podMetrics) getPodMetrics(pods ...*v1.Pod) ([]metrics.PodMetrics, error
|
||||||
Name: pod.Name,
|
Name: pod.Name,
|
||||||
Namespace: pod.Namespace,
|
Namespace: pod.Namespace,
|
||||||
CreationTimestamp: metav1.NewTime(myClock.Now()),
|
CreationTimestamp: metav1.NewTime(myClock.Now()),
|
||||||
|
Labels: pod.Labels,
|
||||||
},
|
},
|
||||||
Timestamp: metav1.NewTime(timestamps[i].Timestamp),
|
Timestamp: metav1.NewTime(timestamps[i].Timestamp),
|
||||||
Window: metav1.Duration{Duration: timestamps[i].Window},
|
Window: metav1.Duration{Duration: timestamps[i].Window},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue