mirror of
https://github.com/weaveworks/scope.git
synced 2026-02-14 18:09:59 +00:00
Stop tagging pods with host ID
So they can be reported centrally, find the pod host ID from the child containers.
This commit is contained in:
@@ -30,7 +30,8 @@ func (t Tagger) Tag(r report.Report) (report.Report, error) {
|
||||
|
||||
// Explicitly don't tag Endpoints, Addresses and Overlay nodes - These topologies include pseudo nodes,
|
||||
// and as such do their own host tagging.
|
||||
for _, topology := range []report.Topology{r.Process, r.Container, r.ContainerImage, r.Host, r.Pod} {
|
||||
// Don't tag Pods so they can be reported centrally.
|
||||
for _, topology := range []report.Topology{r.Process, r.Container, r.ContainerImage, r.Host} {
|
||||
for _, node := range topology.Nodes {
|
||||
topology.ReplaceNode(node.WithLatests(metadata).WithParent(report.Host, t.hostNodeID))
|
||||
}
|
||||
|
||||
@@ -53,14 +53,16 @@ var PodRenderer = Memoise(ConditionalRenderer(renderKubernetesTopologies,
|
||||
},
|
||||
MakeReduce(
|
||||
PropagateSingleMetrics(report.Container,
|
||||
Map2Parent{topologies: []string{report.Pod}, noParentsPseudoID: UnmanagedID,
|
||||
chainRenderer: MakeFilter(
|
||||
ComposeFilterFuncs(
|
||||
IsRunning,
|
||||
Complement(isPauseContainer),
|
||||
),
|
||||
ContainerWithImageNameRenderer,
|
||||
)},
|
||||
MakeMap(propagateHostID,
|
||||
Map2Parent{topologies: []string{report.Pod}, noParentsPseudoID: UnmanagedID,
|
||||
chainRenderer: MakeFilter(
|
||||
ComposeFilterFuncs(
|
||||
IsRunning,
|
||||
Complement(isPauseContainer),
|
||||
),
|
||||
ContainerWithImageNameRenderer,
|
||||
)},
|
||||
),
|
||||
),
|
||||
ConnectionJoin(MapPod2IP, report.Pod),
|
||||
KubernetesVolumesRenderer,
|
||||
@@ -68,6 +70,24 @@ var PodRenderer = Memoise(ConditionalRenderer(renderKubernetesTopologies,
|
||||
),
|
||||
))
|
||||
|
||||
// Pods are not tagged with a Host ID, but their container children are.
|
||||
// If n doesn't already have a host ID, copy it from one of the children
|
||||
func propagateHostID(n report.Node) report.Node {
|
||||
if _, found := n.Latest.Lookup(report.HostNodeID); found {
|
||||
return n
|
||||
}
|
||||
var first *report.Node
|
||||
n.Children.ForEach(func(child report.Node) {
|
||||
if first == nil {
|
||||
first = &child
|
||||
}
|
||||
})
|
||||
if first != nil {
|
||||
n.Latest = n.Latest.Propagate(first.Latest, report.HostNodeID)
|
||||
}
|
||||
return n
|
||||
}
|
||||
|
||||
// PodServiceRenderer is a Renderer which produces a renderable kubernetes services
|
||||
// graph by merging the pods graph and the services topology.
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user