节点创建:

apiserver 被调用 → 创建 Deployment/Pod 配置清单(存 etcd)
controller 监听 → 生成 “待创建 Pod” 的请求(提交给 apiserver)
scheduler 监听 → 给 Pod 分配目标节点(更新到 apiserver)
目标节点 kubelet 收到指令 → 拉镜像、创建 Pod 容器 → 调用 Calico 分配 Pod IP
kubelet 把 Pod IP 上报给 apiserver
Endpoint 控制器监听 → 把 Pod IP 加到 Endpoint 里 → 流程完毕。

pod请求

Pod ↔ Pod 直接通信
全程 = Calico 干活
无 VIP、无 kube-proxy、无翻译
Pod ↔ Service 通信
先访问 VIP
→ 本机 kube-proxy 翻译成 一个可用的 Pod IP
→ 再交给 Calico 路由发送

传统 Docker:端口是 “Node 级资源”,抢 Node 上的端口用;
K8s+Calico:Pod 有自己的 “网络身份(IP)+ 端口空间”,端口是 “Pod 级资源”,不用抢 Node 的端口,Calico 只负责让这些 Pod IP 能跨 Node 互通。

场景IP 分配维度核心执行者IP 特性
传统 Docker 容器Node 级Docker 本机网桥仅 Node 内可达,需端口映射
K8s Pod(Calico)Pod 级Calico(CNI 插件)集群内可路由,跨 Node 直连


K8s Pod(Calico)    Pod 级    Calico(CNI 插件)    集群内可路由,跨 Node 直连
简单说:
Docker 容器 IP 是 “Node 私有的”,跨 Node 要借 Node 端口;
K8s + Calico 的 Pod IP 是 “集群公有的”,每个 Pod 一个独立 IP,绑定在 pause 上,全集群能直接访问,不用抢 Node 端口。

更多推荐