【云原生】k8s 前置环境 网络配置 VMware Linux共享上网(iptables forward)

文章详细介绍了如何在Kubernetes集群中,通过Linux的iptables配置,让VMware中的虚拟机通过NAT模式上网,以及如何设置网关和DNS。作者还分享了解决DNS问题和iptables拦截的经验。

前言

本文介绍了如何使用 Linux iptalbes 来使其他内网主机进行上网。

解释说明:一般情况下,VMware安装好后会出现两张网卡,vmnet1 与 vmnet8 。其中vmnet1 为仅主机模式(虚拟机之间可通信,虚拟机与宿主机可通信,不能上网);vmnet8 为 NAT 模式(虚拟机之间可通信,虚拟机与宿主机可通信,可上网)。

其实k8s的三台主机也可以设置为NAT模式,直接具有上网的能力,但为什么要多一台主机出来呢?

多余的这一台主机就是k8s三台主机的网关,所有内网的流量都经过这台主机,所以可以配置一些其他的内容(代理、监控、ssr等等)。本文只演示如何上网,其他的请自行研究。

一、基本环境准备

  • OS:Windows 10
  • VMware: 16
  • Linux 发行版:CentOS Linux 7.9 x86_64

二、虚拟机准备

4台虚拟机(2台亦可)。

主机名规格网络通讯模式ip地址
k8s-master01

2C4G

OnlyHost

192.168.20.11

k8s-node012C4GOnlyHost192.168.20.12
k8s-node022C4GOnlyHost192.168.20.13
netshare1C1G

网卡1: OnlyHost

网卡2: NAT

网卡1:192.168.20.1

网卡2:DHCP

三、VMnet1 网络配置

1. 打开 VMware,菜单栏【编辑】->【虚拟网络编辑器】更改设置

 将 仅主机模式 的 “使用本地DHCP服务将P地址分配给虚拟机” 取消勾选,确认即可。

2. Win+r ncpa.cpl 进入 网络连接 面板 

修改 VMnet1 的 IPv4 地址为 192.168.20.100,子网掩码 255.255.255.0 ,默认网关不需要填写,确认退出。

四、配置netshare主机 

netshare主机预览并开启虚拟机

1. 配置IP地址
ip a

因为NAT网卡默认开启的DHCP,所以自动获取到了IP地址。

即 ens32 为 仅主机网卡,ens33为NAT网卡。

vi /etc/sysconfig/network-scripts/ifcfg-ens32

 修改及添加

重启网卡,查看ip,联网测试(能否联网与仅主机网卡无关)

systemctl restart network
ip a
ping baidu.com

2. 配置 yum 源

xshell连接

cd /etc/yum.repos.d/
mkdir bak && mv *.repo bak
curl -O http://mirrors.aliyun.com/repo/Centos-7.repo && mv Centos-7.repo CentOS-Base.repo

yum clean all && yum makecache
3. 禁用防火墙
systemctl disable firewalld --now
4. 配置iptables服务 
yum -y install iptables-services net-tools

启用IP转发

echo "net.ipv4.ip_forward = 1 " >> /etc/sysctl.conf
sudo sysctl -p

创建iptabables规则

sudo systemctl enable iptables --now
# 清空默认iptables规则
sudo iptables -F
# 放通全部
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
# ens33 为NAT网卡名称
sudo iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE
sudo sh -c 'iptables-save > /etc/sysconfig/iptables'
systemctl reload iptables
iptables -t nat -L

五、内网其他主机配置

 打开k8s-master01

ping baidu.com
ip a

1. 配置网络
vi /etc/sysconfig/network-scripts/ifcfg-ens32

 将网关指向 netshare 即可。DNS要用公共DNS。保存退出

2. 重启网卡测试
systemctl restart network
ping baidu.com
yum -y install net-tools

 netstat -nr

3. 另外两台主机配置相同

至此,内网主机可以上网了。

说明:这里我们的DNS1和DNS2都设置为了公共DNS。如果不想使用公共DNS,那么可以在netshare主机上,安装bind,启用named(DNS服务)。然后内网的主机DNS1就可以与网关地址一致了(192.168.20.1)。

结语

        鼓捣了几个小时,因为之前配置过,感觉这次应该很简单。

        果然还是遇到问题了,能ping通baidu.com的ip,就是ping不通域名,DNS也设置了,一直以为写错了,后来发现是iptables拦住了。清空iptables规则后,就好了。

  192.168.20.1 > 192.168.20.11: ICMP host 114.114.114.114 unreachable - admin prohibited, length 63
    IP (tos 0x0, ttl 63, id 6114, offset 0, flags [DF], proto UDP (17), length 55)
    192.168.20.11.58190 > 114.114.114.114.53: [udp sum ok] 49312+ A? baidu.com. (27)

希望可以帮到你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值