内网服务器加入k8s集群上——创建虚拟局域网

    随着k8s集群上部署的项目增多,服务器cpu、内存已经达到瓶颈,经常卡顿。正需要给集群扩容时发现公司有5台16核32G的闲置服务器,都可以上外网但是没有公网ip,都是NAT内网环境,http也被ISP屏蔽。
现有集群部署在腾讯云上有公网环境的,于是让master节点当网关和路由创建虚拟局域网()完成互联,让公司的服务器加入集群。
这是简化的拓扑结构

内网服务器加入k8s集群上——创建虚拟局域网_第1张图片

一、环境准备:三台主机都安装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 查看失败原因
   

内网服务器加入k8s集群上——创建虚拟局域网_第2张图片


② 检测客户端和网关之间是否能ping通

内网服务器加入k8s集群上——创建虚拟局域网_第3张图片内网服务器加入k8s集群上——创建虚拟局域网_第4张图片内网服务器加入k8s集群上——创建虚拟局域网_第5张图片


③检测客户端之间是否互通,在 192.168.18.10 上 ping 192.168.18.11
 

内网服务器加入k8s集群上——创建虚拟局域网_第6张图片

客户端之间不能ping通,使用 tracroute 跟踪路由
 

内网服务器加入k8s集群上——创建虚拟局域网_第7张图片

原因是使用了默认网关,需要添加静态路由,指定 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

此时网络联通,虚拟局域网部署完成
 

内网服务器加入k8s集群上——创建虚拟局域网_第8张图片

④编写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账户加入虚拟局域网进行访问。

内网服务器加入k8s集群上——创建虚拟局域网_第9张图片内网服务器加入k8s集群上——创建虚拟局域网_第10张图片

连接成功后就可以远程通过192.168.18.0/24 网段 管理公司内部服务器
 

你可能感兴趣的:(集群,k8s,k8s,网络,运维,linux)