
docker-compose容器,它可以将POD内的其他容器关联起来。也可以对服务的状态进行监控。没有 Pause:
┌───────────────┐ ┌───────────────┐
│ Container A │ │ Container B │
│ IP: 10.0.0.1 │ │ IP: 10.0.0.2 │ ← 各自独立 IP
│ eth0 │ │ eth0 │ ← 各自独立网卡
└───────────────┘ └───────────────┘
有 Pause:
┌─────────────────────────────────────┐
│ Pod │
│ ┌─────────┐ │
│ │ Pause │ ← 持有网络命名空间 │
│ │ IP: 10.0.0.1 │
│ │ eth0 │
│ └────┬────┘ │
│ │ 共享 │
│ ┌────┴────┬──────────┐ │
│ ▼ ▼ ▼ │
│ Container A Container B │
│ (共享 IP) (共享 IP) │
│ localhost 互通 │
└─────────────────────────────────────┘
特点:
| 特点 | 说明 |
|---|---|
| 极简 | 只有一个永久 sleep 的进程 |
| 资源占用极低 | 几乎不消耗 CPU/内存 |
| 第一个启动 | Pod 创建时最先启动 |
| 最后一个退出 | Pod 删除时最后退出 |
| 不做任何业务 | 只负责持有命名空间 |


如果某个POD在运行过程中挂掉,ReplicaSet就会在另一个机器上重启一个POD,保证服务的正常运行。

当应用有新版本要部署时,Deployment会启动一个新的ReplicaSet。例如原来的ReplicaSet有两个POD,则新的ReplicaSet先新建一个POD,等成功部署后,把原来的POD删除:

最终状态如下:

现在版本为v2。原来的v1版本下线。实际上所有步骤对于我们而言都是透明的。

Service只存在于k8s内存,将访问IP映射为访问服务名。
那所有节点怎么知道映射关系的呢。
每个POD节点都有一个kube-proxy报务,当Service更新时,会维护一个路由表。