linux-sre-handbook

05-K8s网络与存储

K8s 网络模型

三个核心要求:
1. Pod 间的通信 (不经过 NAT)
2. Node 和 Pod 间的通信
3. Pod 看到自己的 IP 和其他 Pod 看到的相同

CNI 插件对比

插件 模式 特点 适用
Calico BGP/IPIP/VXLAN 网络策略强, 性能好 大型集群
Flannel VXLAN/host-gw 简单, 轻量 小型/学习
Cilium eBPF 超高性能, 可观测 高性能场景
Weave VXLAN 加密, 多播 安全要求高

Service 网络实现

kube-proxy 三种模式:

模式 实现 特点
iptables iptables NAT 规则 默认, 规则多时性能差
IPVS IPVS 内核模块 高性能, 支持多种调度算法
用户空间 代理转发 旧模式, 已不推荐
# 查看 kube-proxy 模式
kubectl get cm kube-proxy -n kube-system -o yaml | grep mode

# IPVS 调度算法
# rr: 轮询 (默认)
# lc: 最少连接
# sh: 源地址哈希 (会话保持)

存储 (PersistentVolume)

存储抽象层

Pod → PVC (PersistentVolumeClaim) → PV (PersistentVolume) → 实际存储
                                  ↑
                          StorageClass (动态供应)

PV 访问模式

模式 说明
ReadWriteOnce (RWO) 单节点读写
ReadOnlyMany (ROX) 多节点只读
ReadWriteMany (RWX) 多节点读写
# PVC 示例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: gp2

CSI (Container Storage Interface)

标准化的存储插件接口,支持 AWS EBS、GCE PD、Ceph RBD、NFS 等。

延伸阅读