// getContainerInfo contacts kubelet for the container informaton. The "Stats" // in the returned ContainerInfo is subject to the requirements in statsRequest. func getContainerInfo(c *client.Client, nodeName string, req *kubelet.StatsRequest) (map[string]cadvisor.ContainerInfo, error) { reqBody, err := json.Marshal(req) if err != nil { return nil, err } data, err := c.Post(). Prefix("proxy"). Resource("nodes"). Name(fmt.Sprintf("%v:%v", nodeName, ports.KubeletPort)). Suffix("stats/container"). SetHeader("Content-Type", "application/json"). Body(reqBody). Do().Raw() var containers map[string]cadvisor.ContainerInfo err = json.Unmarshal(data, &containers) if err != nil { return nil, err } return containers, nil }