bgunderlay bgunderlay bgunderlay

在 Docker 和 Kubernetes 中管理 IP 地址

随着容器化成为现代应用程序开发的核心组成部分,Docker 和 Kubernetes 等环境中的高效 IP 地址管理 (IPAM) 至关重要。容器需要唯一的 IP 地址才能相互通信并与外部系统通信。了解如何有效管理这些 IP 地址,可确保应用程序在动态环境中保持可扩展性、安全性和最佳性能。

容器中的 IP 地址管理为何重要

在传统网络中,管理 IP 地址需要为物理设备分配静态或动态 IP。在容器化环境中,实例的生命周期很短,因此需要自动动态分配 IP 地址。Docker 和 Kubernetes 中有效的 IP 地址管理可确保:

  • 容器之间的无缝通信
  • 当新容器启动或关闭时,可实现高效的网络可扩展性
  • 将 IP 地址冲突的风险降至最低
  • 为外部流量提供清晰的路由,使其到达正确的集装箱化服务

与传统虚拟机不同,容器有独特的网络需求,需要结构合理的 IPAM 策略。

在 Docker 中管理 IP 地址

Docker 提供了多种网络选项,每种选项都提供了不同的方法来管理和为容器分配 IP 地址。

Docker 网络概述

Docker 提供四种主要网络模型:

  1. 桥梁网络

单个主机上 Docker 容器的默认网络。容器从为桥接网络定义的子网中获取 IP 地址,从而可以与同一桥接网络上的其他容器通信。

  1. 主机网络

绕过网络隔离,使用主机的网络堆栈。容器与主机共享相同的 IP 地址。

  1. 叠加网络

用于 Docker Swarm 环境。它通过为运行在不同 Docker 主机上的容器提供来自覆盖网络的 IP 地址,使它们能够相互通信。

  1. Macvlan 网络

允许容器在主机子网中拥有自己唯一的 IP 地址。容器在网络上显示为一个物理设备。

Docker 如何管理 IP 地址

默认情况下,当使用桥接网络时,Docker 会从内部子网为容器分配 IP 地址。桥接网络使用 IPAM(IP 地址管理)自动分配 IP 地址。

例如,当您创建 Docker 桥接网络时:

docker network create –subnet=192.168.0.0/16 my_custom_network

Docker 会将 192.168.0.0/16 子网中的 IP 地址分配给连接到该网络的任何容器。Docker 中的 IP 地址分配由 IPAM 驱动程序处理,它决定 IP 范围和地址分配方式。

Docker 使用以下方法管理 IP 地址:

静态 IP 分配

需要时,您可以为容器手动分配 IP 地址。这对于需要固定 IP 才能与传统系统交互的容器来说非常有用。

docker run –net my_custom_network –ip 192.168.1.5 nginx

动态 IP 分配

默认情况下,Docker 从网络的 IP 池中动态分配 IP 地址,确保不会发生冲突。

使用 Docker Compose 管理 IP 地址

使用 Docker Compose 时,可以在 docker-compose.yml 文件中定义自定义 IP 地址范围和子网掩码。

版本:’3

服务

  web:

    图像:nginx

    网络

      我的网络

        ipv4_address:192.168.1.10

网络

  我的网络

    ipam:

      配置:

        – 子网:192.168.1.0/24

这种设置允许 nginx 容器在自定义网络中接收静态 IP 地址。

在 Kubernetes 中管理 IP 地址

Kubernetes 和 Docker 一样,使用 IPAM 管理 Pod、服务和节点的 IP 地址。不过,Kubernetes 的联网更为复杂,因为需要管理多层联网,包括 pod、服务和集群范围内的通信。

Kubernetes 网络模型

Kubernetes 抽象化了大多数网络复杂性,确保:

  • 每个 pod 都有自己的 IP 地址。
  • Pod 无需使用 NAT(网络地址转换)即可相互通信。
  • 同一 pod 中的容器共享相同的网络命名空间和 IP。

Kubernetes 有两个主要的 IPAM 组件:

  1. Pod IP 管理

Kubernetes 中的每个 pod 都有自己唯一的 IP 地址。这些 IP 地址通常由正在使用的容器网络接口(CNI)插件分配。

  1. 服务 IP 管理

Kubernetes 服务会获得一个虚拟 IP(ClusterIP),用于平衡 Pod 的流量。

容器网络接口 (CNI) 插件

Kubernetes 本身并不处理联网问题,而是将这项任务委托给 CNI 插件。这些插件负责为 pod 分配 IP 地址并管理网络路由。

流行的 CNI 插件包括

  • 花布

提供 IP 地址管理、网络策略执行和路由选择。

  • 法兰绒

为 pod 分配 IP 地址并管理 pod 之间的通信。

  • 编织

为 Kubernetes pod 自动分配 IP 地址,并处理节点间联网。

Kubernetes 如何管理 IP 地址

Kubernetes 使用网络 CIDR(无类域间路由)来分配 pod IP 地址。在建立 Kubernetes 集群时,可以定义 pod 的 CIDR 范围:

kubeadm init –pod-network-cidr=192.168.0.0/16

每个 pod 都会从该 CIDR 范围接收一个 IP 地址,CNI 插件负责管理分配。

为 Kubernetes Pod 配置静态 IP

Kubernetes 允许你为服务分配静态 IP,但不鼓励为 pod 分配静态 IP,因为 pod 是短暂的。相反,服务提供了一种访问 pod 的稳定方式,即使 pod 的 IP 发生变化。

不过,在特定情况下,您可能需要为服务分配一个静态 IP:

apiVersion: v1

种类:服务

元数据:

  名称: 我的服务

规格:

  类型:群集 IP

  集群 IP: 10.96.0.100

  端口:

    – 协议:TCP

      端口80

      targetPort: 80

  选择器:

    应用程序: 我的应用程序

在本例中,该服务在群集 IP 范围内获得了一个静态 IP(10.96.0.100)。

Docker 和 Kubernetes IP 地址管理比较

特点DockerKubernetes
默认 IP 分配通过桥接网络或覆盖网络自动进行通过 CNI 插件自动运行
静态 IP 分配可用于单个集装箱不鼓励用于吊舱,用于服务
联网范围通常在单个主机或 “蜂群 “内运行全集群,跨多个节点
IPAM 管理由 Docker 处理(使用自定义 IPAM 驱动程序)由 CNI 插件处理
交流模式跨主机通信需要明确的网络设置无需 NAT 的 Pod-to-pod 通信

管理容器中 IP 地址的最佳实践

  1. 在多主机环境中使用重叠网络

在 Docker 中,使用覆盖网络确保不同主机上的容器可以无缝通信。

  1. 利用 CNI 插件

在 Kubernetes 中,使用 Calico 或 Flannel 等 CNI 插件来简化 pod 之间的通信和 IP 管理。

  1. 避免为 Pod 设置静态 IP

Kubernetes pod 的设计是短暂的。与其为 pod 分配静态 IP,不如使用 Kubernetes 服务来提供稳定的访问。

  1. 监控 IP 利用率

密切关注 IP 地址池,避免耗尽。这在运行数百个容器或 pod 的大规模环境中尤为重要。

结论

在 Docker 和 Kubernetes 等容器化环境中管理 IP 地址,需要清楚了解这些系统中如何抽象和控制网络。Docker 通过其网络选项提供了静态和动态 IP 分配的灵活性,而 Kubernetes 则利用 CNI 插件自动处理 IPAM。了解了这些机制,网络管理员就能在 Docker 和 Kubernetes 环境中优化容器通信、增强安全性并避免 IP 冲突。

Alexander Timokhin

CCO

    Ready to get started?

    Articles
    Subnetting my coffee shop
    Subnetting my coffee shop

    Understanding Subnetting in Practical Terms: Designing […]

    More
    The Local Internet Registry (LIR) and the End User
    The Local Internet Registry (LIR) and the End User

    Understanding the Role and Responsibilities of a Sponso […]

    More
    IP 计算器
    IP 计算器

    计算 子网掩码 可用 IP 块 打开市场 大致租赁价格 成本 租赁 /24

    More
     如何创建子网和配置路由
     如何创建子网和配置路由

    随着网络基础设施规模和复杂性的增长,对有效 IP 地址管理和高效路由选择的需求变得至关重要。子网在将大型网络划

    More
    IP计算器
    IP计算器

    Calculate Subnet Mask Available IP Blocks Open marketpl […]

    More
    IPv4租赁革命:2025年精明企业为何放弃所有权
    IPv4租赁革命:2025年精明企业为何放弃所有权

    为何IPv4租赁成为2025年企业的明智之选 1. 引言 朋友们、同事们,大家好!👋

    More
    为什么企业在2024年重新思考其IPv4策略
    为什么企业在2024年重新思考其IPv4策略

    IPv4资源管理的战略演进:数字基础设施时代的市场洞察与业务转型

    More
    从HTTP/1.1到HTTP/3:支持全球客户端的经验总结
    从HTTP/1.1到HTTP/3:支持全球客户端的经验总结

    从HTTP/1.1到HTTP/3:网络基础设施专业人员须知 上个月在协助客户排查新Web服务部署的IPv4地址

    More
    IPv4地址短缺:我如何帮助企业节省8万美元的地址成本
    IPv4地址短缺:我如何帮助企业节省8万美元的地址成本

    IPv4地址稀缺:支持主管的资源优化战略框架 战略实施路线图

    More