In our environment, we primarily use containerd (via Kubernetes) because it is lightweight, stable, and tightly aligned with Kubernetes through the CRI ecosystem. The biggest benefits we’ve seen are simpler operations (fewer moving parts than a full Docker Engine stack), good performance under steady load, and predictable behavior for image pulls, container lifecycle management, and node upgrades. It also fits well with modern security and supply-chain controls when paired with proper image scanning and signing in the CI/CD pipeline. The main challenges are mostly “day-2” troubleshooting and tooling habits—some engineers miss familiar Docker CLI workflows, and debugging sometimes requires adopting crictl/runtime-specific commands and better observability on nodes. Overall, it has improved cluster reliability and reduced runtime-related drift across environments.