在Kubernetes(K8s)中,路由器端口映射外网端口是很常见的操作,可以让我们的服务能够从外部访问。在这篇文章中,我将向您介绍如何实现这一步骤,并为您提供相关的代码示例。

### 流程概述
首先,让我们看看整个操作的流程,可以用以下步骤来描述:

| 步骤 | 操作 |
| --- | --- |
| 1 | 创建一个Service来导出您的Deployment |
| 2 | 创建一个Ingress对象来公开Service到外部 |
| 3 | 配置路由器端口映射,将外部端口映射到Service内 |
| 4 | 验证映射是否成功,通过外网端口访问您的Service |

### 代码示例
下面是具体每一步所需的代码示例及其注释:

#### 步骤 1:创建一个Service
首先,我们需要创建一个Service来导出您的Deployment。以下是一个示例YAML文件:

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

在上面的示例中,我们定义了一个名为`my-service`的Service,它将端口80导出到您的Deployment。您可以使用`kubectl apply -f your-service.yaml`来应用这个配置文件。

#### 步骤 2:创建一个Ingress对象
接下来,我们需要创建一个Ingress对象来公开Service到外部。以下是一个示例YAML文件:

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
```

在上面的示例中,我们定义了一个名为`my-ingress`的Ingress对象,它将请求路由到`my-service`。您可以使用`kubectl apply -f your-ingress.yaml`来应用这个配置文件。

#### 步骤 3:配置路由器端口映射
根据您的路由器型号和品牌,具体的配置方法可能有所不同。通常,您需要登录到您的路由器管理界面,并找到端口映射/端口转发选项。

在端口映射配置中,您需要将外部端口(例如80)映射到您的Kubernetes集群节点的IP地址上的相应端口(通常是Service的NodePort)。请参考您的路由器手册或官方文档以获取具体的操作步骤。

#### 步骤 4:验证映射是否成功
最后,您可以通过访问外网端口的方式来验证映射是否成功。您可以在浏览器中输入`http://your-external-ip:80`来访问您的Service。

### 总结
通过上面的步骤,在Kubernetes中实现路由器端口映射外网端口并不复杂。通过创建Service、Ingress对象和配置路由器端口映射,您可以让您的服务从外部访问。希望这篇文章对您有所帮助,如果您有任何疑问或需要进一步的帮助,请随时向我提问!