使用ingress发布服务,需要达到以下效果: 访问http://172.31.1.3:9765,实际就是访问到后端http://172.31.1.3:8083/edge-modules-data-transmission/
时间: 2025-06-26 15:17:45 浏览: 14
### 配置 Ingress 实现 HTTP 请求转发
为了实现 `http://172.31.1.3:9765` 转发至 `http://172.31.1.3:8083/edge-modules-data-transmission/` 的功能,可以通过 Kubernetes 中的 Ingress 对象来完成。以下是详细的配置方法:
#### 1. 定义 Ingress YAML 文件
创建一个名为 `ingress-path-redirect.yaml` 的文件,内容如下:
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: path-redirect-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: 172.31.1.3.xip.io # 如果有域名可以替换为实际域名
http:
paths:
- path: /(.*)/(.*)
pathType: ImplementationSpecific
backend:
service:
name: edge-modules-service
port:
number: 8083
```
上述配置的关键点在于:
- 使用了 `nginx.ingress.kubernetes.io/rewrite-target` 注解[^3] 来定义路径重写规则。
- 将请求中的 `/anything/specific` 路径映射到后端服务的实际路径。
#### 2. 创建 Service 对应后端 Pod
确保有一个对应的 Service 已经存在并指向目标容器实例。如果尚未创建,则可通过以下命令创建:
```yaml
apiVersion: v1
kind: Service
metadata:
name: edge-modules-service
spec:
selector:
app: edge-modules-app
ports:
- protocol: TCP
port: 8083
targetPort: 8083
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: edge-modules-deployment
spec:
replicas: 1
selector:
matchLabels:
app: edge-modules-app
template:
metadata:
labels:
app: edge-modules-app
spec:
containers:
- name: edge-modules-container
image: your-docker-image-name
ports:
- containerPort: 8083
```
此部分描述了一个简单的部署和服务结构,其中 `your-docker-image-name` 应该被替换成实际使用的镜像名称。
#### 3. 应用配置
执行以下命令应用以上配置:
```bash
kubectl apply -f ingress-path-redirect.yaml
```
验证 Ingress 是否成功创建:
```bash
kubectl get ingress
```
确认返回的结果中有正确的主机名和路径匹配信息。
---
### 注意事项
- 确认集群中已安装 NGINX Ingress Controller 或其他支持的控制器插件[^4]。
- 若未启用 DNS 解析,可临时使用 IP 地址加 `.xip.io` 域名测试(如上例所示)。
- 当前假设默认命名空间为 `default`;如果不是,请调整上下文中涉及的资源查找范围。
阅读全文
相关推荐


















