在Kubernetes(K8S)环境中,OpenWrt 是一个针对嵌入式设备的 Linux 发行版,常用于路由器和其他网络设备。无公网IP内网穿透是指在没有公网IP情况下,通过一些技术手段实现将内网服务暴露到公网,使得外部访问这些服务成为可能。

整体流程可以分为以下几个步骤:

| 步骤 | 描述 |
|-----|-----------------------|
| 1 | 在OpenWrt上安装内网穿透工具 |
| 2 | 配置内网穿透工具 |
| 3 | 在K8S集群中创建Service |
| 4 | 使用内网穿透工具将Service暴露到公网 |

接下来,我们依次介绍每个步骤需要做的内容,并提供相应的代码示例以帮助实现。

### 步骤一:在OpenWrt上安装内网穿透工具

1.1 登录到OpenWrt设备,可以通过SSH或Web界面进行操作。
1.2 使用opkg包管理工具安装内网穿透工具,例如Frpc。

```bash
opkg update # 更新软件包列表
opkg install frpc # 安装Frpc
```

### 步骤二:配置内网穿透工具

2.1 编辑Frpc的配置文件`frpc.ini`,配置OpenWrt设备作为Frpc的客户端。

```ini
[common]
server_addr = Your_Frps_Server_IP # Frps服务器地址
server_port = Your_Frps_Server_Port # Frps服务器端口
token = Your_Token # 连接Frps服务器的密钥

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
```

### 步骤三:在K8S集群中创建Service

3.1 在Kubernetes集群中创建需要暴露到公网的Service,例如一个简单的NodePort Service。

```yaml
apiVersion: v1
kind: Service
metadata:
name: example-service
spec:
selector:
app: example
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
```

### 步骤四:使用内网穿透工具将Service暴露到公网

4.1 在OpenWrt设备上启动Frpc,加载配置文件`frpc.ini`。

```bash
frpc -c /etc/frp/frpc.ini
```

4.2 现在,您就可以通过Frps服务器提供的公网IP和端口访问到Kubernetes集群中的Service服务了。

通过这些步骤,您可以在没有公网IP的OpenWrt设备上实现内网穿透,将Kubernetes集群中的Service服务暴露到公网,实现外部访问内部服务的需求。希望这篇文章对您有所帮助!