如何在k8s和ALB(或NLB)上创建前向代理服务器



我在ALB后面的EKS pod上创建了前向代理服务器(由AWS Load Balancer Controller创建(。所有吊舱都可以通过ALB通过8118端口接收响应。

pod和ingress这样的资源对我来说很好。然后我试着看看代理服务器是否能很好地与curl -Lx k8s-proxy-sample-domain.ap-uswest-1.elb.amazonaws.com:18118 ipinfo.io配合使用

通常情况下,我会从ipinfo.io中获得随机ip地址。但它没有。。。。所以,我也做了port-forad。像这样:

kubectl port-forward specifi-pod 8118:8118

然后我重新尝试重定向对我的主机地址的访问。

curl -Lx localhost:8118 ipinfo.io

在这种情况下,进展顺利。我不明白原因。THROUGH ALBport-forward有什么区别。出于某种原因,我应该使用NLB吗?还是一些误解?

我的环境

  • k8s版本:v1.18.2
  • 节点类型:fargate

清单

这是我的舱单。

---
apiVersion: v1
kind: Namespace
metadata:
name: tor-proxy
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: tor-proxy
name: tor-proxy-deployment
spec:
selector:
matchLabels:
app.kubernetes.io/name: tor-proxy
replicas: 5
template:
metadata:
labels:
app.kubernetes.io/name: tor-proxy
spec:
containers:
- image: dperson/torproxy
imagePullPolicy: Always
name: tor-proxy
ports:
- containerPort: 8118
---
apiVersion: v1
kind: Service
metadata:
labels:
name: tor-proxy
name: tor-proxy-service
namespace: tor-proxy
spec:
ports:
- port: 18118
targetPort: 8118
protocol: TCP
type: NodePort
selector:
app.kubernetes.io/name: tor-proxy
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
namespace: tor-proxy
name: tor-proxy-ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 18118}]'
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: tor-proxy-service
servicePort: 18118

使用NLB而不是ALB,因为它通过代理服务器将客户端IP传递到目标站点。

最新更新