### 端口映射和端口转发一样吗?

#### 流程概述
在Kubernetes(K8S)中,端口映射和端口转发其实是两个不同的概念。端口映射是将集群内一个 Pod 上的端口映射到集群外的端口,让外部能够访问到 Pod。而端口转发是将请求从集群外的一个端口转发到集群内的一个 Pod 上。下面将详细介绍端口映射和端口转发的操作流程及代码示例。

#### 端口映射流程
| 步骤 | 操作 |
| ---- | ----- |
| 1. | 创建一个 Deployment |
| 2. | 创建一个 Service 类型为 NodePort |
| 3. | 查看 Service 的 NodePort 端口 |

#### 端口映射操作步骤及代码示例
1. 创建一个 Deployment:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-app
spec:
replicas: 1
selector:
matchLabels:
app: demo-app
template:
metadata:
labels:
app: demo-app
spec:
containers:
- name: demo-app
image: nginx
ports:
- containerPort: 80
```

2. 创建一个 Service 类型为 NodePort:
```yaml
apiVersion: v1
kind: Service
metadata:
name: demo-app-service
spec:
selector:
app: demo-app
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30080
```

3. 查看 Service 的 NodePort 端口:
```bash
kubectl get svc demo-app-service
```

#### 端口转发流程
| 步骤 | 操作 |
| ---- | ----- |
| 1. | 创建一个 Deployment |
| 2. | 创建一个 Service 类型为 NodePort |
| 3. | 执行端口转发命令进行转发 |

#### 端口转发操作步骤及代码示例
1. 创建一个 Deployment,这一步与端口映射操作流程中创建 Deployment 步骤相同。

2. 创建一个 Service 类型为 NodePort,也与端口映射操作流程中创建 Service 步骤相同。

3. 执行端口转发命令进行转发:
```bash
kubectl port-forward pod/demo-app-pod 8080:80
```
其中,pod/demo-app-pod 表示要转发的 Pod 的名称,8080 表示本地端口,80 表示要转发到的 Pod 的端口。

通过以上步骤和代码示例,你应该能够理解端口映射和端口转发的区别了。端口映射是将 Pod 上的端口映射到外部,而端口转发是将外部请求转发到 Pod 上。希望对你有所帮助!