在Kubernetes(简称K8S)中实现端口映射将内网IP映射到公网固定IP上是一个比较常见的需求,尤其是在需要将应用服务暴露给外部网络访问时。本文将带领刚入行的小白开发者通过详细的步骤和代码示例,实现这一功能。

整体流程如下表所示:

| 步骤 | 操作内容 |
|---------------------|------------------------------------------------------------|
| 1. 创建Service资源 | 定义一个Service用于对Pod提供负载均衡的服务 |
| 2. 创建Ingress资源 | 配置Ingress资源实现将公网IP映射到Service的端口上 |

现在,让我们一步步来实现上述流程。

### 步骤 1: 创建Service资源
首先,我们需要创建一个Service资源,用于对Pod提供负载均衡的服务。

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

上述代码中,我们定义了一个名为`my-service`的Service资源,选择标签为`app: my-app`的Pod作为目标,将服务暴露在端口80,并将流量引导到Pod的端口8080上。

### 步骤 2: 创建Ingress资源
接下来,我们需要创建一个Ingress资源,用于将公网IP映射到Service的端口上。

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

上述代码中,我们定义了一个名为`my-ingress`的Ingress资源,配置了将`mydomain.com`的流量映射到Service `my-service`的端口80上。

### 部署应用
最后,我们需要部署我们的应用和创建的Service和Ingress资源。

```bash
kubectl apply -f my-app.yaml
kubectl apply -f my-service.yaml
kubectl apply -f my-ingress.yaml
```

通过上述步骤,我们成功地实现了端口映射将内网IP映射到公网固定IP上。现在,可以通过`mydomain.com`来访问我们的应用服务。

希望以上内容对你有所帮助,如有疑问或更多要了解,请随时向我提问。祝你学习进步!