目录
- 环境
- 原因
- 基础概念
- VMnet网络
- IPV4网络私有地址范围
- Vmnet8的作用
- 网路通信的过程
- 解决方法1:修改k8s组件重新启动
- 解决方法2:配置静态IP
- 系统网卡设置
- 设置虚拟机网关
- 修改虚拟机网卡
环境
- 本机系统:windows11
- 虚拟机系统:CentOS-7-x86_64-Minimal-2009
- 虚拟机运行时:VMware
原因
在一个地方部署的k8s集群,初始化的时候使用的虚拟机ip为ip1,到了另一个地方虚拟机ip因为dhcp自动变了一个,导致k8s集群用不了了,要修改又非常麻烦。
基础概念
VMnet网络
VMware 的 VMnet 是一组用于虚拟机网络的虚拟网络适配器。VMnet 提供了多种虚拟网络模式,允许虚拟机与主机以及其他虚拟机之间进行通信。这些虚拟网络适配器在 VMware 虚拟化平台上创建,并由 VMware Workstation 和 VMware Fusion 等产品使用。
以下是 VMware 中常见的几种 VMnet 网络模式:
-
VMnet0 (Bridged) 模式:
- 模式说明:在这个模式下,虚拟机的网络适配器将与主机的物理网络适配器桥接连接,就像虚拟机直接连接到局域网一样。
- 适用场景:适用于虚拟机需要直接访问网络上其他设备,并且需要和主机在同一网络中出现的情况。
-
VMnet1 (Host-Only) 模式:
- 模式说明:在这个模式下,虚拟机只能与主机进行通信,虚拟机之间以及虚拟机与主机外的网络是隔离的。
- 适用场景:适用于需要在虚拟机之间进行通信,但不希望虚拟机与主机外的网络通信的情况。
-
VMnet8 (NAT) 模式:
- 模式说明:在这个模式下,虚拟机通过主机的网络适配器与外部网络通信,主机充当了一个网络地址转换(NAT)路由器。
- 适用场景:适用于虚拟机需要访问外部网络,但又不希望直接暴露虚拟机的 IP 地址的情况。
-
VMnet2、VMnet3、VMnet4 等自定义 Host-Only 模式:
- 模式说明:这些是用户自定义的 Host-Only 模式,可以创建多个独立的 Host-Only 网络,虚拟机只能在同一网络中通信,与主机和外部网络隔离。
- 适用场景:适用于需要将虚拟机分成多个独立网络的情况,各个网络之间不互通。
通过 VMware 虚拟网络,你可以根据不同的需求为虚拟机配置不同的网络连接方式,以满足各种不同的场景。虚拟网络的灵活性使得虚拟机能够在不同的网络环境中进行开发、测试和运行,而无需影响到主机的网络配置。
IPV4网络私有地址范围
IPv4 私有地址范围是指一些特定的 IP 地址段,这些地址段被保留用于在私有网络中使用,不用于直接连接到公共互联网。在私有网络中,你可以自由地分配和使用这些地址,而无需向公共互联网注册或支付费用。私有地址在局域网(LAN)、家庭网络、企业网络、虚拟化环境等场景中非常常见。
IPv4 的私有地址范围如下:
-
10.0.0.0 到 10.255.255.255:
- 这个范围包含了从 10.0.0.0 到 10.255.255.255 共计 16777216 个 IP 地址。
- 例如,10.0.0.1、10.1.2.3、10.255.255.254 等都是属于这个范围的私有地址。
-
172.16.0.0 到 172.31.255.255:
- 这个范围包含了从 172.16.0.0 到 172.31.255.255 共计 1048576 个 IP 地址。
- 例如,172.16.0.1、172.16.100.10、172.31.255.254 等都是属于这个范围的私有地址。
-
192.168.0.0 到 192.168.255.255:
- 这个范围包含了从 192.168.0.0 到 192.168.255.255 共计 65536 个 IP 地址。
- 例如,192.168.0.1、192.168.100.50、192.168.255.254 等都是属于这个范围的私有地址。
虽然这些私有地址在私有网络中是唯一且可以重复使用的,但是它们不在公共互联网上可路由。当需要从私有网络中的设备与公共互联网进行通信时,通常使用网络地址转换(NAT)来将私有地址转换成公共 IP 地址,以实现与外部网络的通信。
私有地址范围是为了在 IPv4 地址资源有限的情况下,在局域网等场景中提供了一种有效的方式来管理 IP 地址。而在需要连接到公共互联网时,使用私有地址与公共 IP 地址进行转换,使得较少的公共 IP 地址可以服务于更多的私有网络设备。
私有地址范围的存在是为了解决 IPv4 地址资源有限的问题。IPv4 使用 32 位二进制数表示 IP 地址,理论上总共有约 43亿个唯一的 IPv4 地址。然而,随着互联网的快速发展和设备的普及,IPv4 地址资源已经逐渐不够用了。
私有地址范围的引入是为了在局域网、企业内部网络等私有网络环境中,通过重复使用一组特定的 IP 地址,实现了更有效的 IP 地址管理。这样,即使全球范围内 IPv4 地址耗尽,私有网络仍然能够继续使用私有地址。
私有地址范围的优点和用途包括:
-
节省公共 IP 地址资源: 在全球范围内,IP 地址已经面临耗尽的问题。通过在私有网络中使用私有地址范围,可以节省公共 IP 地址资源,使得公共 IP 地址能够更有效地被分配给互联网可访问的设备。
-
灵活的 IP 地址分配: 在私有网络中,使用私有地址范围可以实现更灵活的 IP 地址分配。你可以根据实际需要自由地分配和使用 IP 地址,而无需向任何注册机构申请。
-
安全性: 私有地址范围使得在私有网络中的设备不直接暴露在公共互联网中,从而增加了一定的网络安全性。通过网络地址转换(NAT)技术,私有网络中的设备可以间接访问公共互联网,而公共互联网上的设备不能直接访问私有网络中的设备。
总结来说,私有地址范围的引入是为了解决 IPv4 地址资源不足的问题,并且在私有网络环境中实现了更灵活、更有效的 IP 地址管理。这使得私有网络能够继续正常运行,即使全球范围内的 IPv4 地址已经用尽。
Vmnet8的作用
在 VMware 虚拟化软件中,VMnet8 是一种虚拟网络设备,通常用于 VMware Workstation 或 VMware Fusion 等产品中的 NAT(网络地址转换)网络模式。VMnet8 充当着网络地址转换器(NAT Router)的角色,它在虚拟化环境中扮演着以下决策和功能:
-
网络地址转换(NAT): VMnet8 提供了网络地址转换功能,允许虚拟机通过虚拟化软件的 NAT 网络模式与主机系统连接到外部网络(通常是公共互联网)。当虚拟机发送数据包到外部网络时,VMnet8 接收数据包并将其源 IP 地址转换为主机系统的 IP 地址,以便响应数据包的目标服务器可以正确地将数据包返回给虚拟机。这使得虚拟机可以间接访问公共互联网,而不需要分配独立的公共 IP 地址。
-
DHCP 服务器: VMnet8 还可以充当虚拟化环境中的 DHCP 服务器。当虚拟机连接到 VMnet8 网络时,VMnet8 可以为虚拟机自动分配 IP 地址、子网掩码、网关地址等网络参数,从而实现自动化的 IP 地址配置。
-
DNS 代理: VMnet8 可以充当 DNS 代理,使得虚拟机能够解析域名。当虚拟机需要解析域名时,VMnet8 可以将 DNS 请求转发到主机系统或其他 DNS 服务器,获取域名对应的 IP 地址,并返回给虚拟机。
-
虚拟网络隔离: VMnet8 提供了虚拟网络的隔离功能,使得虚拟机之间相互隔离,并且与主机系统之间也有一定的隔离。这种隔离确保了虚拟机之间的网络流量不会相互干扰,同时也保护了主机系统的网络安全。
总的来说,VMnet8 在虚拟化环境中是一个重要的虚拟网络设备,它通过网络地址转换、DHCP 和 DNS 代理等功能,为虚拟机提供了网络连接和访问外部网络的能力,并确保虚拟机之间和主机系统之间的网络隔离和安全性。
网路通信的过程
网络通信是一个复杂的过程,涉及多个物理硬件和协议的配合。以下是从你的主机获得一个私有 IP 地址开始,到请求公网信息的整个过程,简单概括的步骤:
-
获取私有 IP 地址: 当你的主机连接到一个局域网(例如家庭网络或企业局域网)时,它会通过 DHCP 协议向网络中的 DHCP 服务器请求 IP 地址。DHCP 服务器会分配一个私有 IP 地址给你的主机。
-
数据封装: 当你的主机要发送请求到公网时,它会根据目标服务器的 IP 地址、子网掩码和网关等信息,将请求数据封装成数据包(通常是以太网帧)。
-
发送数据包: 数据包被发送到本地网络的交换机。交换机会根据目标 IP 地址和 MAC 地址查找转发表,决定将数据包发送到哪个端口,以便达到目标设备。
-
路由选择: 数据包到达局域网的路由器(通常是网关),路由器根据自己的路由表,确定将数据包发送到公共互联网的下一跳路由器。(通常是你的网络服务提供商的路由器)
-
NAT 转换: 在路由器将数据包发送到公共互联网之前,进行网络地址转换(NAT)。在这一步,路由器会将数据包的源 IP 地址(也就是你的主机的私有 IP 地址)转换为路由器在公共互联网上拥有的公共 IP 地址。这样做的目的是让公网服务器能够正确地将响应数据发送回路由器(即转换后的公共 IP 地址)。(公网IP在运营商手里)
-
公网传输: 数据包经过一系列的公共互联网路由器、交换机和服务器,最终到达目标服务器。
-
服务器响应: 目标服务器收到请求后,会处理请求并生成响应数据。响应数据会经过相同的网络路径,通过公共互联网回到你的主机所在的网络。
-
NAT 转换回复: 响应数据通过路由器时,路由器会将公共 IP 地址转换回私有 IP 地址,以便正确地将数据包转发给你的主机。
-
数据包解封: 你的主机接收到响应数据包后,根据协议和端口信息解封数据包,得到服务器的响应。
-
完成通信: 服务器的响应已经到达你的主机,至此,网络通信过程完成。
在整个网络通信过程中,数据包会通过多个物理硬件设备(如交换机、路由器、服务器等)进行转发和传输,通过网络地址转换(NAT)和路由选择,确保数据能够在不同网络之间正确地传递。
解决方法1:修改k8s组件重新启动
当 Kubernetes 集群的节点 IP 发生变化时,可能会导致集群中的通信和连接问题。为了解决这个问题,你需要进行以下步骤:
-
更新节点 IP 地址:首先,你需要登录到每个 Kubernetes 节点,并手动更新网络配置以将新的 IP 地址应用到节点上。具体的网络配置文件可能因操作系统的不同而有所不同。在大多数 Linux 发行版中,你可以编辑
/etc/network/interfaces
或/etc/sysconfig/network-scripts/ifcfg-<interface>
文件来更改 IP 地址。 -
更新 kubelet 配置:在每个节点上,你还需要更新 kubelet 的配置文件,以反映新的节点 IP 地址。kubelet 是在每个节点上运行的 Kubernetes 组件,它需要知道节点的正确 IP 地址以与其他节点和控制平面通信。
-
更新 etcd 配置(如果需要):如果你的 Kubernetes 集群使用外部 etcd(分离的 etcd 集群),那么你还需要更新 etcd 配置,使其使用新的节点 IP 地址。这通常涉及到更新 etcd 集群的配置文件,并重新启动 etcd。
-
更新其他组件配置:除了 kubelet 和 etcd,如果有其他与节点 IP 地址相关的配置(如 CoreDNS、kube-proxy 等),也需要进行相应的更新。
-
重新启动组件:完成以上配置更改后,你需要重新启动相关的 Kubernetes 组件,以使更改生效。
需要注意的是,修改节点 IP 地址是一项敏感的操作,并且可能导致集群中断。在进行这样的更改之前,最好在进行更改之前备份重要的数据和配置文件。
解决方法2:配置静态IP
系统网卡设置
IP地址在私有域内随便配置,子网掩码跟随IP地址,默认网关配置.1:
(在较小的网络中,经常会将子网的第一个可用地址分配给网关。假设使用了 xx.xx.xx.0/24 的子网,第一个可用地址就是 xx.xx.xx.1(网络地址(xx.xx.xx.0)用于标识整个子网,表示这是一个子网的起始地址。),而最后一个可用地址是 xx.xx.xx.254(广播地址(xx.xx.xx.255)用于将数据包广播到子网中的所有设备,所有在该子网中的设备都会接收到广播消息。),这样设计可以更好地管理 IP 地址的分配。)
设置虚拟机网关
点击导航栏上面的【编辑】–>【虚拟网络编辑器】,并以【管理员】的身份打开虚拟机。
点击【VMnet8 NAT模式】,取消使用本地使用本地dhcp服务,配置网络段(子网ip段)为xxx.xxx.xxx.xxx,点击NAT设置。
修改虚拟机网卡
vim /etc/sysconfig/network-scripts/ifcfg-ens33(网卡名称也可能是其他名称)
将BOOTPROTO字段修改为static(静态),如果ONBOOT字段为no,则将其修改为yes(开机自启)。然后添加IP地址、子网掩码、网关、以及DNS。
修改完成后重启网卡
systemctl restart network