在 Kubernetes 中,子网与宿主机的对应关系通常不会直接存储在 etcd 中。Kubernetes 使用 CNI(Container Network Interface)插件来管理 Pod 网络,CNI 插件负责为每个 Pod 分配 IP 地址并设置网络规则,同时将这些信息写入到各种底层网络技术中实现网络隔离和路由功能。
具体地说,在一个 Kubernetes 集群中,每个节点上都运行着 kubelet 进程和 CNI 插件,kubelet 进程负责监控该节点上运行的所有容器和 Pod,并与 API Server 通信来同步各种资源对象的状态信息。而 CNI 插件则负责在容器启动时创建网络命名空间、配置 veth 设备、分配 IP 地址等操作,并向 kubelet 上报相关信息。
当一个 Pod 被调度到某个节点时,kubelet 和对应的 CNI 插件会自动创建相应的网络命名空间和虚拟网卡,并为该 Pod 分配一个唯一的 IP 地址。这些信息都是保存在 kubelet 的内存中,并通过 Kubelet API 提供给其他组件使用。因此,在 Kubernetes 集群中,子网与宿主机的对应关系是由 kubelet 和 CNI 插件动态维护的,并不需要显式地保存到 etcd 中。
需要注意的是,在某些特殊情况下(例如使用 HostNetwork 模式或者自定义 CNI 插件等),Pod 可能会共享节点的网络命名空间,此时 Pod 的 IP 地址和网络规则将直接继承自节点,而不需要额外的子网信息。