问题
K8s中 Service 是怎么将Pod服务的端口?
# iptables 的四表五链
# 四表
iptables 的四个表 iptable_filter,iptable_mangle,iptable_nat,iptable_raw,默认表filter(没有指定表的时候就是filter表)。
- filter 表:
- 用来对数据包进行过滤,具体的规则要求决定如何处理一个数据包。
- 对应的内核模块为:
iptable_filter
,其表内包括三个链:input
、forward
、output
;
- nat 表:
- nat 全称:network address translation 网络地址转换,主要用来修改数据包的 IP 地址、端口号信息。
- 对应的内核模块为:
iptable_nat
,其表内包括三个链:prerouting
、postrouting
、output
;
「疑问」
众所周知,K8s 的持久化存储(Persistent Storage)保证了应用数据独立于应用生命周期而存在,那么是否也有如下的一些疑问:
-
如果 pod 中的某一个容器在运行时异常退出,被 kubelet 重新拉起之后,如何保证之前容器产生的重要数据没有丢失?
-
如果同一个 pod 中的多个容器想要共享数据,应该如何去做?
-
K8s 内部的存储流程到底是怎样的?
-
PV、PVC、StorageClass、Kubelet、CSI 插件等之间的调用关系又如何?
简介
排查完全陌生的问题、完全不熟悉的系统组件,对于后端开发工程师来说是乐趣,当然也是挑战。今天借这篇文章,跟大家分析一例这样的问题。排查过程中,需要理解一些自己完全陌生的组件,比如 systemd 和 dbus。但是排查问题的思路和方法基本上还是可以复用了,希望对大家有所帮助。