Kubernetes 中的容器运行时(如 Docker 或 containerd)负责在节点上运行容器。它与 Kubelet 紧密合作,确保根据 Kubernetes 提供的 pod 规范启动和维护容器。


容器运行时是在节点上实际运行容器的底层软件。它接收来自 Kubelet 的命令来启动、停止和管理容器。下面的示例演示了如何与 Docker(一种流行的容器运行时)交互,以管理 Kubernetes 节点上的容器。

[代码清单]

# Check the status of containers managed by Docker on a node
docker ps -a
# Example output shows all containers running on the node, including those managed by Kubernetes

[执行结果]

CONTAINER ID  IMAGE     COMMAND         CREATED     STATUS           PORTS    NAMES
d9b100f2d815  nginx:latest  "nginx -g 'daemon of…"  5 minutes ago  Up 5 minutes        80/tcp   k8s_nginx_default_example-pod-12345_67890
f1234567890b  pause:3.2   "/pause"         5 minutes ago  Up 5 minutes (Paused)         k8s_POD_default_example-pod-12345_67890

容器运行时是 Kubernetes 架构的重要组成部分。Docker 曾是默认的容器运行时,但 Kubernetes 已转向使用 containerd 作为更轻量级、更专注于 Kubernetes 的解决方案。容器运行时处理拉取容器镜像、启动容器和管理容器生命周期等底层工作。Kubelet 会向容器运行时发送命令,以创建、停止和监控 pod 规范中定义的容器。容器运行时会执行这些命令,确保容器按预期运行。如果容器意外崩溃或停止,运行时将尝试根据 pod 配置中定义的策略重新启动容器。

[小知识]

Kubernetes 引入了容器运行时接口(CRI),允许将不同的容器运行时插入 Kubernetes。这使得 Kubernetes 变得灵活,可以支持 Docker 和 containerd 以外的各种运行时,如 CRI-O。这种模块化确保 Kubernetes 能随着新容器技术的出现而发展。