k8s 探索4:使用 frp 将集群暴露到公网

k8s 探索4:使用 frp 将集群暴露到公网

🎈「k8s 探索」系列:

我的 k8s 的集群是放在家里,而一般家庭网络时没有固定的 IP 的,所以如果我想在外面访问集群,或者让朋友也能访问我的集群,就需要通过「内网穿透」进入。这里我们选用一个非常好用的免费工具——frp

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

1 准备工作

下载对应版本的 frp,解压后备用。

1
2
3
4
5
6
7
8
9
10
# 当前最新版本是 0.37.1,最新版本可以去这里找 https://github.com/fatedier/frp/releases
# 服务器是 amd64 架构
cd ~/software
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
tar -zxvf frp_0.37.1_linux_amd64.tar.gz

# 树莓派是 arm64 架构
cd ~/software
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_arm64.tar.gz
tar -zxvf frp_0.37.1_linux_arm64.tar.gz

2 安装 frp server

我们先在具有公网 IP 的服务器上部署 frps。

1
2
3
4
5
sudo vi /home/op/software/frp_0.37.1_linux_amd64/frps.ini

# 修改 frps.ini 文件,设置端口为 7000
[common]
bind_port = 7000

添加 systemd 配置文件,方便操作 frps。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sudo vi /etc/systemd/system/frps.service 
# 添加
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/op/software/frp_0.37.1_linux_amd64/frps -c /home/op/software/frp_0.37.1_linux_amd64/frps.ini
Restart=always
RestartSec=1min
ExecStop=/usr/bin/killall frps

[Install]
WantedBy=multi-user.target

# 设置开机启动
sudo systemctl enable frps.service
# 立即启动
sudo service frps start

3 安装 frp client

在需要被访问的内网树莓派上部署 frpc。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sudo vi /home/ubuntu/software/frp_0.37.1_linux_arm64/frpc.ini

# 修改 frpc.ini 文件
[common]
server_addr = x.x.x.x # 你的服务器的公网 IP
server_port = 7000 # 上文在 frps 里写的端口

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000 # 外网访问的端口

# 映射多个端口,比如映射 1000 个连续端口
[range:port]
type = tcp
local_ip = 127.0.0.1
local_port = 8000-9000
remote_port = 8000-9000

添加 systemd 配置文件,方便操作 frpc。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
sudo vi /etc/systemd/system/frpc.service

# 添加
[Unit]
Description=frpc daemon
After=syslog.target network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/ubuntu/software/frp_0.37.1_linux_arm64/frpc -c /home/ubuntu/software/frp_0.37.1_linux_arm64/frpc.ini
Restart=always
RestartSec=1min
ExecStop=/usr/bin/killall frpc

[Install]
WantedBy=multi-user.target

# 设置开机启动
sudo systemctl enable frpc.service
# 立即启动
sudo service frpc start

4 访问

如果你的配置完全按照上文,那么最终服务器的 6000 端口就会转发到树莓派的 22 端口。

1
ssh -p 6000 ubuntu@x.x.x.x

经过这番折腾,就可以开心的随时随地访问树莓派了!

5 参考

🎈「k8s 探索」系列:

k8s 探索4:使用 frp 将集群暴露到公网

https://blog.ailln.com/v2ai/2021/08/04/cloud-native/4-k8s-exploration-4/

作者

Ailln

发布于

2021-08-04

更新于

2024-03-02

许可协议

评论