diff --git a/userspace/libsinsp/k8s_state.cpp b/userspace/libsinsp/k8s_state.cpp index aa3b9bea57..6205db4470 100644 --- a/userspace/libsinsp/k8s_state.cpp +++ b/userspace/libsinsp/k8s_state.cpp @@ -34,6 +34,7 @@ limitations under the License. const std::string k8s_state_t::m_docker_prefix = "docker://"; const std::string k8s_state_t::m_rkt_prefix = "rkt://"; +const std::string k8s_state_t::m_containerd_prefix = "containerd://"; const unsigned k8s_state_t::m_id_length = 12u; k8s_state_t::k8s_state_t(bool is_captured, int capture_version): @@ -70,8 +71,15 @@ void k8s_state_t::cache_pod(container_pod_map& map, const std::string& id, const map[id.substr(m_rkt_prefix.size())] = pod; return; } - throw sinsp_exception("Invalid container ID (expected '" + m_docker_prefix + - "{ID}' or '" + m_rkt_prefix + "{ID}'): " + id); + pos = id.find(m_containerd_prefix); + if( pos == 0) + { + map[id.substr(m_containerd_prefix.size(), m_id_length)] = pod; + return; + } + throw sinsp_exception("Invalid container ID (expected one of: '" + m_docker_prefix + + "{ID}', '" + m_rkt_prefix + "{ID}', '" + m_containerd_prefix + + "{ID}'): " + id); } bool k8s_state_t::has_pod(k8s_pod_t& pod) diff --git a/userspace/libsinsp/k8s_state.h b/userspace/libsinsp/k8s_state.h index 58ab7c3109..6a355f056e 100644 --- a/userspace/libsinsp/k8s_state.h +++ b/userspace/libsinsp/k8s_state.h @@ -353,6 +353,7 @@ class k8s_state_t static const std::string m_docker_prefix; // "docker://" static const std::string m_rkt_prefix; // "rkt://" + static const std::string m_containerd_prefix; // "containerd://" static const unsigned m_id_length; // portion of the ID to be cached (=12) #ifndef HAS_ANALYZER