# 端口触发和端口映射的区别

## 流程概述
在Kubernetes(K8S)中,端口触发和端口映射是两种不同的概念。端口触发是指在Pod中配置容器的端口触发规则,当有流量到达时触发相应的动作。而端口映射则是将外部的流量映射到Pod中的容器端口上,以实现外部访问Pod中的服务。下面将通过步骤表格和代码示例详细介绍端口触发和端口映射的区别。

## 端口触发(Port Triggering)

| 步骤 | 操作 |
| ------ | ------ |
| 1 | 在Deployment的yaml配置文件中添加端口触发规则 |
| 2 | 配置端口触发规则对应的动作 |
| 3 | 应用Deployment配置文件 |

### 步骤说明
1. 在Deployment的yaml配置文件中添加端口触发规则,示例代码如下:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image
ports:
- containerPort: 80
trigger:
ports:
- protocol: TCP
port: 80 # 触发端口
```

2. 配置端口触发规则对应的动作,可以在Deployment配置文件中添加相应的规则。

3. 应用Deployment配置文件,使用kubectl apply命令将配置文件应用到Kubernetes集群中。

## 端口映射(Port Mapping)

| 步骤 | 操作 |
| ------ | ------ |
| 1 | 在Service的yaml配置文件中添加端口映射规则 |
| 2 | 创建Service对象 |
| 3 | 配置Ingress或负载均衡器 |

### 步骤说明
1. 在Service的yaml配置文件中添加端口映射规则,示例代码如下:
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80 # 外部访问端口
targetPort: 80 # Pod内部容器端口
```

2. 创建Service对象,使用kubectl apply命令将Service配置文件应用到Kubernetes集群中。

3. 配置Ingress或负载均衡器,通过Ingress或负载均衡器来将外部流量映射到Service中定义的端口上,以便外部访问服务。

## 总结
端口触发和端口映射虽然都涉及到端口的配置,但是其概念和实现方式有所不同。端口触发是在Pod中配置端口规则和对应的动作,实现根据流量触发动作的功能;而端口映射是将外部流量映射到Pod中的容器端口上,实现外部访问服务的功能。在实际应用中,根据具体的需求选择合适的方式来配置端口规则,以实现所需的功能。

希望通过本文的介绍,你对端口触发和端口映射有了更清晰的理解,能够更好地在Kubernetes中配置和管理端口规则。如果有任何疑问或需要进一步的帮助,欢迎随时联系我。祝学习顺利!