Docker · Kubernetes · Ingress 完整技术图谱
负责整个集群的决策和控制,是 K8S 的大脑
实际运行 Pod 的工作机器,可以是物理机或虚拟机
| 对比维度 | Docker | Kubernetes |
|---|---|---|
| 定位 | 容器化平台(创建和运行容器) | 容器编排平台(管理多个容器/集群) |
| 核心能力 | 镜像构建、容器运行、本地管理 | 自动调度、弹性伸缩、服务发现、负载均衡 |
| 作用范围 | 单机或单个主机 | 跨多台机器的集群 |
| 关系 | Docker 是 K8S 的容器运行时之一,K8S 通过 CRI 接口使用 Docker/Containerd | |
Kubernetes 的 HTTP/HTTPS 入口,负责将外部请求路由到集群内部的 Service
实现 Ingress 功能的组件,常用的是 Nginx Ingress Controller
用户在浏览器输入 api.example.com → DNS 服务器解析为 Ingress Controller 的公网 IP
请求到达 K8S 集群边缘的 Ingress Controller(通常绑定 NodePort 或 LoadBalancer)
Controller 根据 Ingress 资源定义的规则,基于 Host 头和 path 匹配对应的 Service
请求被转发到 Service,kube-proxy 通过 iptables/ipvs 做负载均衡,选择一个 Pod
选中的 Pod 内的 Container 接收请求,处理完成后沿原路返回响应
Kubernetes 从 v1.24 开始移除了对 dockershim 的内置支持,现在推荐直接使用 containerd 或 CRI-O 作为容器运行时。
| 组件 | 作用 | 说明 |
|---|---|---|
| Docker | 完整的容器平台 | 包含 build, run, pull, compose 等全套工具 |
| containerd | 容器运行时 | K8S 只需容器运行能力,不需要 Docker 全部功能 |
| CRI | 容器运行时接口 | K8S 与容器运行时之间的标准接口 |
| runc | 容器隔离执行 | 实际创建和运行容器的底层工具 |