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

网关端口定义是如何工作的?

廉博赡
2023-03-14
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: my-gateway
  namespace: some-config-namespace
spec:
  selector:
    app: istio-ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - uk.bookinfo.com
    - eu.bookinfo.com
    tls:
      httpsRedirect: true # sends 301 redirect for http requests
  - port:
      number: 443
      name: https-443
      protocol: HTTPS
    hosts:
    - uk.bookinfo.com
    - eu.bookinfo.com
    tls:
      mode: SIMPLE # enables HTTPS on this port
      serverCertificate: /etc/certs/servercert.pem
      privateKey: /etc/certs/privatekey.pem
LB-IP:443 -> CLUSTER-IP:443 -> istio-ingressgateway:8443
kind: Service
spec:
  ports:
    - name: http2
      protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30804
    - name: https
      protocol: TCP
      port: 443
      targetPort: 8443
      nodePort: 31843
  selector:
    app: istio-ingressgateway
    istio: ingressgateway
  clusterIP: 10.2.138.74
  type: LoadBalancer

由于istio-ingressgateway pods的targetPort是8443,那么将端口号定义为443的网关定义如何工作?

共有1个答案

薄烨
2023-03-14

正如这里提到的

端口:此服务的端口

TargetPort:pod上要将通信量转发到的目标端口

LB-IP:443 -> CLUSTER-IP:443 -> istio-ingressgateway:443 -> envoy-sidecar:8443
LB-IP:80 -> CLUSTER-IP:80 -> istio-ingressgateway:80 -> envoy-sidecar:8080

例如,对于http,如果您在没有配置任何网关的情况下使用netstat检查入口网关pod,那么在端口8080上没有任何监听:

kubectl exec -ti istio-ingressgateway-86f88b6f6-r8mjt -n istio-system -c istio-proxy -- /bin/bash
istio-proxy@istio-ingressgateway-86f88b6f6-r8mjt:/$ netstat -lnt | grep 8080

现在让我们用下面的YAML创建一个http网关。

apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
  name: istio-gw
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"

并再次检查netstat:

kubectl exec -ti istio-ingressgateway-86f88b6f6-r8mjt -n istio-system -c istio-proxy -- /bin/bash
istio-proxy@istio-ingressgateway-86f88b6f6-r8mjt:/$ netstat -lnt | grep 8080
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN
 类似资料:
  • 本章内容衍生自Jessica McKellar的演讲“互联网是怎幺工作的” (http://web.mit.edu/jesstess/www/) 。 我们猜你每天在使用互联网。但是当你在浏览器里输入一个像 https://djangogirls.org 的地址并按 回车键的时候,你真的知道背后发生了什幺吗? 你需要了解的第一件事是一个网站只是一堆保存在硬盘上的文件。 就像你的电影、 音乐或图片一样

  • 我们的GKE集群共享给公司的多个团队。每个团队可以有不同的公共域(因此希望有不同的CA证书设置和不同的入口网关控制器)。在Istio怎么做?Istio网站上的所有教程/介绍文章都使用了共享入口网关。请参见ISTIO-1.0.0安装的共享入口网关示例:https://istio.io/docs/tasks/traffic-management/secure-ingress/

  • 我很难理解窗口在Kafka Streams中是如何工作的。到目前为止,结果似乎与我所阅读和理解的不一致。 我已经创建了一个带有支持主题的KSQL流。KSQL SELECT语句中的“列”之一已被指定为该主题的TIMESTAMP。 my-stream主题中的记录按键(PARTITION_KEY)分组,并用跳转窗口窗口 记录通过 然后我通过 组中的第一个窗口转换为7:00-7:05 当我通过控制台消费者

  • 我有一个在kubernetes pod中运行的应用程序(在我的本地docker桌面上,启用kubernetes),监听端口8080。然后我有以下kubernetes配置 这个很好用。但我想把443端口改成其他端口,比如8443(因为我将有多个网关)。当我有这个,我不能再访问应用程序了。是否有一些配置我遗漏了?我猜我需要配置Istio来接受8443端口?我使用以下命令安装了istio: 编辑:我读了

  • 我试图调试我的应用程序,但调试器没有击中此代码块。这是我的自定义网关过滤器。 下面是这个过滤器的配置 当尝试发送请求时,此endpoint不会启动调试器或将日志打印到控制台。我在这里错过了什么。谢谢你。 如果我在主应用程序中创建AuthorizationHeaderFilter的bean,如下所示 应用程序在启动时引发此错误 我还为云api网关设置了日志级别来调试,下面是日志

  • 管理窗口和面板 您可以通过移动和处理“文档”窗口和面板来创建自定义工作区。您也可以保存工作区并在它们之间进行切换。 重新排列、停放或浮动“文档”窗口 打开多个文件时,“文档”窗口将以选项卡方式显示。 要重新排列选项卡式“文档”窗口,请将某个窗口的选项卡拖动到组中的新位置。 要从窗口组中取消停放(浮动或取消显示)某个“文档”窗口,请将该窗口的选项卡从组中拖出。 要将某个“文档”窗口停放在单独的“文档