### 流程概述
首先让我们通过一张表格来简要展示整个访问外网的流程:
| 步骤 | 操作 |
| ----------------------------------- | ------------------------------ |
| 1. 创建Service来暴露内部服务 | kubectl apply -f service.yaml |
| 2. 创建Ingress来进行外部访问 | kubectl apply -f ingress.yaml |
| 3. 配置DNS解析将域名解析到Ingress | 在DNS服务器配置解析记录 |
| 4. 浏览器中访问域名 | 浏览器访问http://yourdomain.com |
### 操作步骤
现在让我们一步步来实现上述流程,让内网IP加端口的服务通过外网访问。
#### 1. 创建Service
首先,我们需要创建一个Service来暴露内部服务,让外部可以访问到。下面是一个示例的service.yaml文件:
```yaml
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 30001
selector:
app: my-app
```
在这个配置文件中,我们定义了一个名称为"my-service"的Service,类型为NodePort,将容器端口80映射到Node的端口30001,并且选择标签为"app: my-app"的Pod来提供服务。
通过以下命令来创建该Service:
```bash
kubectl apply -f service.yaml
```
#### 2. 创建Ingress
接下来,我们需要创建一个Ingress来进行外部访问。下面是一个示例的ingress.yaml文件:
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: my-service
port:
number: 80
```
在这个配置文件中,我们定义了一个名称为"my-ingress"的Ingress,将访问yourdomain.com的流量转发到名为"my-service"的Service的80端口。
通过以下命令来创建该Ingress:
```bash
kubectl apply -f ingress.yaml
```
#### 3. 配置DNS解析
在第二步中,我们将域名yourdomain.com指向Ingress的IP地址。你需要登录到你的DNS服务器,并在解析记录中添加一个A记录指向Ingress的IP地址。
#### 4. 浏览器中访问域名
最后,在浏览器中访问http://yourdomain.com,即可访问到内网IP加端口映射的服务。如果一切配置正确,你应该能够看到服务的响应。
通过以上步骤,你已经成功实现了内网IP加端口做了外网映射后的访问外网。希望这篇文章能够帮助你理解整个流程并成功搭建相应的环境。如果有任何疑问或者问题,欢迎随时向我提问。祝一切顺利!