
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
先想想之后到底发生了什么。你进到了一个 shell,里面有自己的一套、自己的进程列表、自己的网卡,看起来像一台独立的机器。容器里的进程就是跑在宿主机上的普通进程,它只是被"加了层滤镜",看不到自己外面的世界。这层"滤镜"就是 Linux 内核的Namespace(命名空间)机制。它是内核提供的一种资源视图隔离手段:给不同进程组提供不同的"系统资源视图"。
容器 = Namespace(隔离视图) + Cgroup(限制资源) + rootfs(隔离文件系统)镜像 = 多层只读层堆叠,每一层只记录差异容器 = 只读层 + 一个可写层,联合挂载出容器里的 /UnionFS 是思想,Overlay2 是实现,Docker 只是调用方CoW:改下层文件 = 复制到上层再改;whiteout:删除 = 上层加遮蔽标记Cgroup 三件套:建目录(分组)+ 写
它是一组 Pod 的抽象入口,用一个稳定的虚拟 IP(ClusterIP)和 DNS 名字,把背后不断变化的 Pod 藏起来。怎么关联到具体 Pod?靠Label Selector(标签选择器)。Service 用标签匹配 Pod,只要 Pod 身上带着对应的 label(比如),就自动被收进这个 Service 的"通讯录"里,不需要手动登记 IP。
写这篇的过程就是把"IPVS"从一行笔记变成一张图的过程:先在 3 台 CentOS 上把三种模式各搭了一遍(NAT 网关忘配、DR 忘 ARP 抑制都现场翻车),再回到 minikube 里看 kube-proxy 到底生成了什么规则。绕了这一圈,才真正理解 [[《Kubernetes 核心网络枢纽:Service 与 Ingress 完全指南》|Service 那篇]]里写的"iptables
我最近在折腾 K8s 集群,装好之后第一个让我犯难的问题不是部署,而是监控:这么多 Pod 天天来来回回,到底怎么监控?这一篇就是我把这件事从头想明白的记录。

上一篇结尾我给自己留了个任务:“下一篇该真正把它部署起来了。” 所以这篇是动手篇。目标很朴素:把 Prometheus 装进我的 K8s 集群,亲眼看到数据,再把我自己的应用也拖进来一起监控。结果发现,“装起来"反而是最简单的一步。真正花我时间的,是搞明白"我到底装了个什么”。

它是"你上次告诉它的那个状态",而不是"你 Git 仓库里那个状态"。
Pod 是 K8s 最小不可拆分单元,整盒调度到单台服务器,内部所有容器生死与共,保障云原生 Sidecar(日志 / 监控边车)架构稳定运行。本机多个协作程序靠操作系统进程组捆绑,Docker 单个容器做不到捆绑多个协作程序,K8s 造出 Pod 充当集群环境下的 “超级打包组”。Pod = 把一台机器上绑定干活的一组程序,搬到分布式服务器集群里的 “打包盒子”,就是集群版的操作系统进程组。网站
Pod 是 K8s 最小不可拆分单元,整盒调度到单台服务器,内部所有容器生死与共,保障云原生 Sidecar(日志 / 监控边车)架构稳定运行。本机多个协作程序靠操作系统进程组捆绑,Docker 单个容器做不到捆绑多个协作程序,K8s 造出 Pod 充当集群环境下的 “超级打包组”。Pod = 把一台机器上绑定干活的一组程序,搬到分布式服务器集群里的 “打包盒子”,就是集群版的操作系统进程组。网站
容器 = Namespace(隔离视图) + Cgroup(限制资源) + rootfs(隔离文件系统)镜像 = 多层只读层堆叠,每一层只记录差异容器 = 只读层 + 一个可写层,联合挂载出容器里的 /UnionFS 是思想,Overlay2 是实现,Docker 只是调用方CoW:改下层文件 = 复制到上层再改;whiteout:删除 = 上层加遮蔽标记Cgroup 三件套:建目录(分组)+ 写







