### Linux外网端口映射实现步骤

在Kubernetes(K8S)环境中,要实现Linux外网端口映射,一般可以通过Service和Ingress这两种方式来实现。下面是具体的步骤和代码示例:

| 步骤 | 操作 |
| ------ | ------ |
| 1 | 创建Deployment(部署) |
| 2 | 创建Service |
| 3 | 部署Ingress Controller |
| 4 | 创建Ingress资源 |

### 操作步骤详解

#### 步骤一:创建Deployment

首先,通过以下代码创建一个Deployment,代表你的应用程序的运行实例:

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: your-image:latest
ports:
- containerPort: 80
```

- `apiVersion`: 指定API版本
- `kind`: 指定资源类型为Deployment
- `metadata`: 指定Deployment的名称
- `spec`: 指定Deployment的规格,包括实例数、选择器和容器信息
- `containers`: 定义容器的镜像和端口

#### 步骤二:创建Service

接下来,创建一个Service来暴露Deployment中应用程序的端口:

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

- `apiVersion`: 指定API版本
- `kind`: 指定资源类型为Service
- `metadata`: 指定Service的名称
- `spec`: 指定Service的规格,包括选择器和端口映射
- `type`: 指定Service类型为ClusterIP

#### 步骤三:部署Ingress Controller

在K8S集群中部署Ingress Controller,可根据具体情况选择NGINX、Traefik等不同的Ingress Controller。

#### 步骤四:创建Ingress资源

最后,创建一个Ingress资源来配置外部访问规则,实现端口映射的功能:

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

- `apiVersion`: 指定API版本
- `kind`: 指定资源类型为Ingress
- `metadata`: 指定Ingress的名称
- `spec`: 指定Ingress的规格,包括规则和后端服务信息
- `backend`: 指定后端Service的名称和端口

通过以上步骤,你就可以实现在K8S集群中通过Ingress来进行Linux外网端口映射了。希本这篇文章对你有所帮助,任何问题都可以随时向我提问!