Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 入口控制器和入口如何协同工作?_Kubernetes - Fatal编程技术网

Kubernetes 入口控制器和入口如何协同工作?

Kubernetes 入口控制器和入口如何协同工作?,kubernetes,Kubernetes,我看不到服务和入口yaml文件之间有任何联系。它是如何联系的,它是如何工作的?我查看了nginx入口控制器,但也找不到入口的任何链接 交通是如何流动的LB->入口控制器->入口->后端服务->吊舱?似乎只有80和443被允许进入。这是否意味着在ingres nginx服务上定义的任何自定义端口都通过类似LB->Backend service->pod的方式直接连接到pod 更新:计算出了交通流量。其内容如下: LB->入口控制器->入口->后端服务->吊舱 我有一个带有自定义端口的https虚拟

我看不到服务和入口yaml文件之间有任何联系。它是如何联系的,它是如何工作的?我查看了nginx入口控制器,但也找不到入口的任何链接

交通是如何流动的<代码>LB->入口控制器->入口->后端服务->吊舱?似乎只有80和443被允许进入。这是否意味着在
ingres nginx服务
上定义的任何自定义端口都通过类似
LB->Backend service->pod
的方式直接连接到pod

更新:计算出了交通流量。其内容如下:
LB->入口控制器->入口->后端服务->吊舱

我有一个带有自定义端口的
https虚拟主机
,我想我需要编辑
ingres控制器
yaml文件以允许自定义端口并将自定义端口添加到ingres,它会开始路由吗

ingres.yml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test
  namespace: test
  rules:
    - path: /
      backend:
        serviceName: httpd
        servicePort: 443
apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
data:
  1234: "test-web-dev/httpd:1234"
  1235: "test-web-dev/tomcat7:1235"
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
    - name: https
      port: 443
      protocol: TCP
      targetPort: https
    - name: port-1234
      port: 1234
      protocol: TCP
      targetPort: 1234
    - name: port-1235
      port: 1235
      protocol: TCP
      targetPort: 1235
云通用服务。yml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test
  namespace: test
  rules:
    - path: /
      backend:
        serviceName: httpd
        servicePort: 443
apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
data:
  1234: "test-web-dev/httpd:1234"
  1235: "test-web-dev/tomcat7:1235"
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
    - name: https
      port: 443
      protocol: TCP
      targetPort: https
    - name: port-1234
      port: 1234
      protocol: TCP
      targetPort: 1234
    - name: port-1235
      port: 1235
      protocol: TCP
      targetPort: 1235

可以找到对此的解释

入口公开从集群外部到集群的HTTP和HTTPS路由 集群内的服务。流量路由由规则控制 在入口资源上定义

入口可以配置为提供外部可访问的服务 URL、负载平衡流量、终止SSL/TLS和提供基于名称的服务 虚拟主机

因此,
ingres
将流量从集群外部路由到您在集群中指定的服务,在您的示例中,
httpd
。您可以指定应如何使用流量(nginx入口注释示例)

入口控制器是在集群中运行的应用程序,并且 根据入口资源配置HTTP负载平衡器。这个 负载平衡器可以是在群集中运行的软件负载平衡器 或外部运行的硬件或云负载平衡器。不同的 负载平衡器需要不同的入口控制器实现

对于NGINX,入口控制器与>负载平衡器一起部署在pod中


入口
资源需要存在于集群中。默认情况下,它没有部署到集群中,这就是为什么它必须手动安装的原因。

您能告诉我有关流量的信息吗<代码>磅->入口控制器->入口?或
LB->入口->入口控制器
?似乎只有80和443被允许进入。
ingres nginx
服务上的任何自定义端口都是通过节点端口直接连接到pod的吗?我已经更新了
ingres nginx
以显示我定义的自定义端口也更新了问题。请检查并告诉我这是否是您正在寻找的。