随着k8s集群上部署的项目增多,服务器cpu、内存已经达到瓶颈,经常卡顿。正需要给集群扩容时发现公司有5台16核32G的闲置服务器,都可以上外网但是没有公网ip,都是NAT内网环境,http也被ISP屏蔽。
现有集群部署在腾讯云上有公网环境的,于是让master节点当网关和路由创建虚拟局域网()完成互联,让公司的服务器加入集群。
这是简化的拓扑结构
一、环境准备:三台主机都安装centos7,实验内核版本 3.10.0-1160.15.2.el7.x86_64,所需资源文件 https://download.csdn.net/download/qq_32166165/15354166
1、所有主机关闭防火墙、更新yum源
systemctl stop firewalld
systemctl disable firewalld
yum update -y
2、分别设置主机名,如果配置好网络后再设置主机名比较麻烦
hostnamectl set-hostname master
hostnamectl set-hostname node1
hostnamectl set-hostname node2
二、在公网服务器上安装服务
1、master节点上个安装 、ipsec 服务,直接用脚本一键安装,脚本会询问PSK、用户名、密码
chmod +x .sh
./.sh
####安装成功后提示############
Server IP: 1.15.132.93
PSK : xxxxx
Username : xxxxx
Password : xxxxx
############################
2、启动、ipsec,如果生产环境没关闭防火墙,需要放通 500、4500、1701端口的udp流量
systemctl start ipsec
systemctl start xd
systemctl enable ipsec xd
3、添加远程连接账户,添加两个node账户用于服务器加入虚拟局域网,一个admin账户用户远程管理内网服务器。
-a
####输入帐号和密码######
-l
#######显示账户#########
+-------------------------------------------+
| Username | Password |
+-------------------------------------------+
| node1 | xxxxxxxxxx |
| node2 | xxxxxxxxxx |
| admin | xxxxxxxxxx |
+-------------------------------------------+
4、给两个node账户分配固定IP,如果不分配固定ip,node每次加入虚拟局域网ip随机,不方便k8s集群管理
vi /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
node1 d xxxxxxxxxx 192.168.18.10
node2 d xxxxxxxxxx 192.168.18.11
admin d xxxxxxxxxx *
二、内网服务器连接,加入虚拟局域网
1、node1、node2上安装客户端
yum install -y epel-release
yum -y install xd ppp
2、修改配置文件、并启动xd,不同服务器使用不同帐号。
vi /etc/xd/xd.conf
#################完整内容##################
[lac my]
name = node1
lns = 1.15.132.93
pppoptfile = /etc/ppp/peers/my.xd
ppp debug = no
#######################################
vi /etc/ppp/peers/my.xd
#################完整内容##################
remotename my
user "node1"
password "node1的密码"
unit 0
debug
kdebug 1
mtu 1000
nobsdcomp
nodeflate
noaccomp
nopcomp
novj
#######################################
vi /etc/ipsec.secrets
##################完整内容#################
%any 1.15.132.93 : PSK “服务器PSK”
##########################################
vi /etc/ppp/options.xd
################添加内容###################
lcp-echo-interval 30
lcp-echo-failure 10
##########################################
systemctl start xd
systemctl enable xd
3、拨号连接
sh -c 'echo "c my" > /var/run/xd/-control'
4、测试虚拟局域网是否连通
① ifconfig 查看网卡信息,查看是否连接成功,如果没有ppp网卡,使用 tailf /var/log/messages 查看失败原因
② 检测客户端和网关之间是否能ping通
③检测客户端之间是否互通,在 192.168.18.10 上 ping 192.168.18.11
客户端之间不能ping通,使用 tracroute 跟踪路由
原因是使用了默认网关,需要添加静态路由,指定 192.168.18.0/24 网段的网关为 192.168.18.1 ,同样的node节点需要访问master eth0 192.168.1.50 也需要添加静态路由
route add -net 192.168.18.0/24 gw 192.168.18.1
route add -host 192.168.1.50 gw 192.168.18.1
此时网络联通,虚拟局域网部署完成
④编写shell脚本实现开机自动连接、掉线重连
vi /root/reconnect.sh
#####################################################################
#!/bin/bash
IP=192.168.18.1
while true
do
ping -c 5 -q $IP > /dev/null
if [ $? -ne 0 ]; then
sh -c 'echo "c my" > /var/run/xd/-control'
sleep 10
route add -net 192.168.18.0/24 gw 192.168.18.1
route add -host 192.168.1.50 gw 192.168.18.1
fi
sleep 30
done
####################################################################
vi /etc/rc.d/rc.local
#########################末尾添加####################################
sh /root/reconnect.sh &
#####################################################################
chmod +x /root/reconnect.sh
chmod +x /etc/rc.d/rc.local
reboot重启后,等待30秒左右,如果网络正常代表可以重连
如果不在同一网段需要远程管理node服务器,可使用admin账户加入虚拟局域网进行访问。
连接成功后就可以远程通过192.168.18.0/24 网段 管理公司内部服务器