diff --git a/src/kubernetes.cc b/src/kubernetes.cc index eabb2c5c..adf3485c 100644 --- a/src/kubernetes.cc +++ b/src/kubernetes.cc @@ -401,15 +401,18 @@ KubernetesReader::GetPodAndContainerMetadata( const json::Object* status = pod->Get("status"); const json::Array* container_specs = spec->Get("containers"); - const json::Array* container_statuses = - status->Get("containerStatuses"); // Move the container statuses into a map from name to status. std::map container_status_by_name; - for (const json::value& c_status : *container_statuses) { - const json::Object* container_status = c_status->As(); - const std::string name = container_status->Get("name"); - container_status_by_name.emplace(name, container_status); + if (status->Has("containerStatuses")) { + const json::Array* container_statuses = + status->Get("containerStatuses"); + + for (const json::value& c_status : *container_statuses) { + const json::Object* container_status = c_status->As(); + const std::string name = container_status->Get("name"); + container_status_by_name.emplace(name, container_status); + } } for (const json::value& c_spec : *container_specs) { @@ -507,14 +510,19 @@ std::vector const json::Object* status = pod->Get("status"); const json::Array* container_specs = spec->Get("containers"); - const json::Array* container_statuses = - status->Get("containerStatuses"); - if (container_specs->size() != container_statuses->size()) { - LOG(ERROR) << "Container specs and statuses arrays " - << "have different sizes: " - << container_specs->size() << " vs " - << container_statuses->size() << " for pod " - << pod_id << "(" << pod_name << ")"; + if (status->Has("containerStatuses")) { + const json::Array* container_statuses = + status->Get("containerStatuses"); + if (container_specs->size() != container_statuses->size()) { + LOG(ERROR) << "Container specs and statuses arrays " + << "have different sizes: " + << container_specs->size() << " vs " + << container_statuses->size() << " for pod " + << pod_id << "(" << pod_name << ")"; + } + } else { + LOG(INFO) << "Container statuses do not exist in status for pod " + << pod_id << "(" << pod_name << ")"; } // TODO: find is_deleted.