From 8aa906c277568e46e236ece4330e6d1d2ab3c683 Mon Sep 17 00:00:00 2001 From: Bryan Moyles Date: Wed, 31 Jan 2018 16:59:10 -0500 Subject: [PATCH 1/2] Restore docker container local resource ID when present. --- src/kubernetes.cc | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/src/kubernetes.cc b/src/kubernetes.cc index 266bd452..1359a582 100644 --- a/src/kubernetes.cc +++ b/src/kubernetes.cc @@ -60,6 +60,8 @@ constexpr const char kNodeSelectorPrefix[] = "?fieldSelector=spec.nodeName%3D"; constexpr const char kWatchParam[] = "watch=true"; +constexpr const char kDockerIdPrefix[] = "docker://"; + constexpr const char kServiceAccountDirectory[] = "/var/run/secrets/kubernetes.io/serviceaccount"; @@ -322,8 +324,34 @@ MetadataUpdater::ResourceMetadata KubernetesReader::GetContainerMetadata( const std::string k8s_container_name = boost::algorithm::join( std::vector{kK8sContainerNameResourcePrefix, namespace_name, pod_name, container_name}, kResourceTypeSeparator); + + std::vector local_resource_ids = { + k8s_container_pod, + k8s_container_name, + }; + + if (container_status) { + std::size_t docker_prefix_end = sizeof(kDockerIdPrefix) - 1; + + const std::string docker_id = + container_status->Get("containerID"); + if (docker_id.compare(0, docker_prefix_end, kDockerIdPrefix) != 0) { + LOG(ERROR) << "ContainerID " + << docker_id + << " does not start with " << kDockerIdPrefix + << " (" << docker_prefix_end << " chars)"; + docker_prefix_end = 0; + } + const std::string container_id = docker_id.substr(docker_prefix_end); + const std::string k8s_container_id = boost::algorithm::join( + std::vector{kK8sContainerResourcePrefix, container_id}, + kResourceTypeSeparator); + + local_resource_ids.push_back(k8s_container_id); + } + return MetadataUpdater::ResourceMetadata( - std::vector{k8s_container_pod, k8s_container_name}, + std::move(local_resource_ids), k8s_container, #ifdef ENABLE_KUBERNETES_METADATA MetadataAgent::Metadata(kKubernetesApiVersion, From a1a6454dc98408e53e0a373aa5de5af94d3fd873 Mon Sep 17 00:00:00 2001 From: Bryan Moyles Date: Thu, 1 Feb 2018 11:38:59 -0500 Subject: [PATCH 2/2] Address feedback. --- src/kubernetes.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/kubernetes.cc b/src/kubernetes.cc index 1359a582..cf25daa5 100644 --- a/src/kubernetes.cc +++ b/src/kubernetes.cc @@ -331,18 +331,18 @@ MetadataUpdater::ResourceMetadata KubernetesReader::GetContainerMetadata( }; if (container_status) { - std::size_t docker_prefix_end = sizeof(kDockerIdPrefix) - 1; + std::size_t docker_prefix_length = sizeof(kDockerIdPrefix) - 1; const std::string docker_id = container_status->Get("containerID"); - if (docker_id.compare(0, docker_prefix_end, kDockerIdPrefix) != 0) { - LOG(ERROR) << "ContainerID " + if (docker_id.compare(0, docker_prefix_length, kDockerIdPrefix) != 0) { + LOG(ERROR) << "containerID " << docker_id << " does not start with " << kDockerIdPrefix - << " (" << docker_prefix_end << " chars)"; - docker_prefix_end = 0; + << " (" << docker_prefix_length << " chars)"; + docker_prefix_length = 0; } - const std::string container_id = docker_id.substr(docker_prefix_end); + const std::string container_id = docker_id.substr(docker_prefix_length); const std::string k8s_container_id = boost::algorithm::join( std::vector{kK8sContainerResourcePrefix, container_id}, kResourceTypeSeparator);