
利用k8s ingress访问非POD服务
我要访问k8s.peos.cn自动转发到8080端口上面,因为我的web端口是8080
最终解决方案:让 k8s.peos.cn
自动转发到 8080 端口
1. 问题本质
-
你的 Web 服务监听 8080 端口,但希望用户访问
http://k8s.peos.cn
(默认 80 端口)时自动转发到 8080。 -
ExternalName Service 无法实现端口转换,因为它只做 DNS 映射(
CNAME
),不涉及流量代理。
2. 正确架构(推荐)
使用 Traefik IngressRoute + Service + Endpoints 实现:
-
Service 作为流量入口(监听 80 端口)。
-
Endpoints 直接指向节点 IP 和 8080 端口。
-
IngressRoute 将域名
k8s.peos.cn
路由到该 Service。
3. 完整配置步骤
① 创建 Service(无选择器)
yaml
apiVersion: v1
kind: Service
metadata:
name: kuboard-web
namespace: default
spec:
ports:
- port: 8080 # 集群内访问端口(用户访问的端口)
targetPort: 8080 # 实际转发到 8080
type: ClusterIP
② 创建 Endpoints(手动绑定节点 IP + 8080)
apiVersion: v1
kind: Endpoints
metadata:
name: kuboard-web # 必须与 Service 同名
subsets:
- addresses:
- ip: 192.168.2.220 # 节点实际 IP
ports:
- port: 8080 # Web 服务端口
③ 创建 IngressRoute(域名路由规则)
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: k8s.peos.cn
namespace: default
resourceVersion: '12474'
spec:
ingressClassName: traefik
rules:
- host: k8s.peos.cn
http:
paths:
- backend:
service:
name: kuboard-web
port:
number: 8080
path: /
pathType: Prefix
status:
loadBalancer:
ingress:
- ip: 192.168.2.220
4. 验证方法
-
检查 Service 和 Endpoints 是否绑定bash
kubectl get svc kuboard-web kubectl get endpoints kuboard-web
-
确认
Endpoints
显示节点 IP 和 8080 端口。
-
-
测试访问bash
<span class="token function">curl</span> <span class="token parameter variable">-v</span> http://k8s.peos.cn
-
应返回 Web 服务的 8080 端口内容。
-
5. 关键注意事项
-
防火墙:确保节点防火墙放行 8080 端口(
ufw allow 8080
或iptables
)。 -
DNS:确认
k8s.peos.cn
解析到 Traefik 入口的节点 IP。 -
端口冲突:节点 80 端口未被其他服务占用(Traefik 默认监听 80/443)。
6. 为什么不用 ExternalName?
-
ExternalName
只做 DNS 重定向(CNAME
),无法修改端口。 -
用户访问
http://k8s.peos.cn
(80 端口)时,流量不会自动转发到 8080,必须显式访问http://k8s.peos.cn:8080
(不符合需求)。
✅ 最终效果
-
用户访问
http://k8s.peos.cn
→ Traefik 接收 80 端口请求 → 转发到 Service → 通过 Endpoints 到达节点 8080 端口 → 返回 Web 服务响应。 -
完全透明,用户无需手动输入端口号。
============ 欢迎各位老板打赏~ ===========


与本文相关的文章
- · 单台服务器应用不中断服务热部署滚动更新方案
- · Linux安装NFS
- · k3s+kuboard快速搭建K8s生产环境集群
- · 部署docker+k3s+rancher2
- · 部署k3s+KubeSphere
- · es+filebeat+elastalert2实现异常邮件提醒
- · centos7安装k8s集群(2022版)
- · k8s之Service
- · k8s之PersistentVolume&PersistentVolumeClaim
- · k8s之ReplicationController
- · k8s deployment with persistentVolume
- · k8s之java-deployment