k3s 实现 nginx 中的反向代理

情况描述

例如 nginx 的服务器在 192.168.1.10,gogs 服务器在 192.168.1.20,不想把 gogs 迁移到 192.168.1.10 中。

常规有个 nginx 加如下代码即可反向代理了:

1
2
3
location / { 
proxy_pass http://192.168.1.20:3000/;
}

k3s 操作

k3s 也可以实现相关的功能,创建一个 yaml 如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
apiVersion: v1
kind: Endpoints
metadata:
name: proxy-demo
subsets:
- addresses:
- ip: 192.168.1.20
ports:
- port: 3000
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: proxy-demo
name: proxy-demo
spec:
ports:
- port: 80
targetPort: 3000
protocol: TCP
sessionAffinity: None
type: ClusterIP
---

如果没有 ingress-nginx 做入口的话,把 type: ClusterIP 改成 type: NodePort,然后通过 http://192.168.1.10:nodePort/ 即可访问 http://192.168.1.20:3000/

如果有 ingress-nginx 的话,服务名填 proxy-demo,端口填 80。