当前位置: 首页 > 知识库问答 >
问题:

如何使用nginx入口将流量从route53中的域转发到pod?

宰父熙云
2023-03-14

我用头盔部署了格拉法纳,现在它正在吊舱中运行。我可以访问它,如果我代理端口3000到我的笔记本电脑。我试图指向一个域grafana。某物com,以便我可以从外部访问该pod。我在route53中有一个域,可以连接到负载平衡器(应用程序负载平衡器、网络负载平衡器、经典负载平衡器)。该负载平衡器可以将流量从端口80转发到端口80,再转发到一组节点(让我们稍后保留端口443)。我真的很难设置这个。我肯定少了些什么,但我不知道是什么。

我想基本图应该是这样的。

互联网
↓↓
路由53中的域(grafana.something.com)
↓↓
负载平衡器80到80(应用程序负载平衡器、网络负载平衡器、经典负载平衡器)我猜LB会将流量转发到端口80到以下入口控制器(使用Helm部署Grafana时创建)
↓↓
EKS工作节点组
↓↓<入口资源
↓↓
入口控制器-在Grafana部署时使用Helm in namespace测试创建。

kubectl获取svc grafana-n test

格拉法纳类型:集群集群集群:10。x、 x.x端口:80/TCP

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 
  labels:
    app: grafana
    chart: grafana-
    heritage: Tiller
    release: grafana-release
  name: grafana
  namespace: test
  resourceVersion: "xxxx"
  selfLink: 
  uid: 
spec:
  clusterIP: 10.x.x.x
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 3000
  selector:
    app: grafana
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}

↓↓
Pod Grafana正在监听端口3000。代理到笔记本电脑端口3000后,我可以成功访问它。

共有2个答案

谷梁子昂
2023-03-14

在此添加2条重要建议。

1)继kubernetes 1.18中入口api的改进之后,入口规范中添加了一个新的入口类名称字段,用于引用应用于实现此入口的入口类
请考虑切换到ingressClassName字段,而不是kubernetes字段。io/入口。类注释:

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: grafana-ingress
  namespace: test
spec:
  ingressClassName: nginx # <-- Here
  rules:
    - host: grafana.something.com
      http:
        paths:
          - path: /
            backend:
              serviceName: grafana
              servicePort: 80

2)考虑使用外部DNS在外部DNS服务器(在AWS Route53上查看此示例)和库伯内特斯Ingresses/Services之间进行集成。

漆雕博
2023-03-14

鉴于您似乎没有安装入口控制器,如果您在K8S集群中配置了aws云提供程序,您可以按照本指南使用Helm安装Nginx入口控制器。

在本指南的末尾,您应该为入口控制器创建了一个负载均衡器,将您的Route53记录指向它并创建一个使用您的grafana服务的入口。示例:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/app-root: /
    nginx.ingress.kubernetes.io/enable-access-log: "true"
  name: grafana-ingress
  namespace: test
spec:
  rules:
  - host: grafana.something.com
    http:
      paths:
      - backend:
          serviceName: grafana
          servicePort: 80
        path: /

最终交通路径为:

Route53 -> ELB -> Ingress -> Service -> Pods
 类似资料:
  • 问题内容: 我正在尝试制作一个使用 Redis* 作为后端的 Java应用程序 。由于 Redis 是一个非常快速的键值存储,我想使用它,但是 redis 可以与1个客户端一起使用,因此它没有user:pass身份验证的选项。我想找到一种实现某种身份验证的方法,因此我尝试了带有 redis2 扩展名的 nginx 。我这样做是因为我可以使用 客户端证书 和HTTPS。但这使我的应用程序非常慢。 *

  • 问题内容: 我正在尝试将所有流量从端口6999转发到端口7000(我知道我可以使用iptables,但想法是使用Node.js进行某些数据包检查)。 这是我有沙发的代码: 它似乎似乎不起作用。当我在端口7000上执行tcpdump时,什么都没有显示。有人有什么建议吗? 提前谢谢了, 问题答案: 这是我的努力: 支持从命令行提供“从”和“到”,并支持远程计算机。 (另存为proxy.js) 从loc

  • GKE入口可以与Google的托管SSL证书一起使用。这些证书被部署在负载均衡器的边缘服务器中,这导致了非常低的TTFB(到第一个字节的时间) GKE入口有什么问题

  • 我编写了一个SOCKS代理,如果关闭链接,它可以同时处理HTTP和HTTPS流量。 如果链接已打开并且转发主机和端口属于过滤HTTP代理,则只有HTTP流量可以流动。HTTPS流量不流动并报告SSL错误。 请注意,当请求直接来自浏览器而不是SOCKS服务器时,HTTP代理会处理HTTPS流量。 例如,如果我向https://www.google.com出现以下情况: 1)客户端发送SOCKS 5问

  • 我在 192.168.100.1:1080 上有一个代理,可以转发流量,我知道使用: 可以将 eth0 的流量转发到 192.168.100.1:1080,但是我使用 nftables 却无法实现,测试了 iptables-translate 等工具也不行。 我期望的结果是,将 eth0 的所有流量通过 192.168.100.1:1080 代理转发。 请问我如何通过 nftables 实现上述需

  • 以下是我遵循的步骤- kubectl apply-f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml kubectl apply-f https://raw.githubusercontent.com/kubernetes/ingress-nginx/mas