Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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 入口使用clusterIP类型公开服务_Kubernetes_Kubernetes Ingress - Fatal编程技术网

Kubernetes 入口使用clusterIP类型公开服务

Kubernetes 入口使用clusterIP类型公开服务,kubernetes,kubernetes-ingress,Kubernetes,Kubernetes Ingress,是否可以通过使用ClusterIP类型的入口公开服务 apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: my-service ports: - name: my-service-port port: 4001 targetPort: 4001 --- apiVersion: networking.k8s.io/v1beta1 kind: Ingress

是否可以通过使用ClusterIP类型的入口公开服务

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-service
  ports:
  - name: my-service-port
    port: 4001
    targetPort: 4001
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: my.example.com
      http:
        paths:
        - path: /my-service
          backend:
            serviceName: my-service
            servicePort: 4001

我知道该服务可以使用NodePort类型公开,但如果有人能告诉我从云中的互联网世界检测内部服务的最快方法,可能需要多连接一次NAT。不,clusterIP只能从集群内部访问。入口本质上只是一组第7层转发规则,它不能处理向外部世界公开集群内部的第4层要求。至少需要1个NAT步骤

不过,要让入口工作,您需要至少涉及一个将工作负载暴露在外部的服务,所以需要使用nodePort或loadBalancer。入口控制器和集群的基础结构将决定您需要使用这两种服务中的哪一种

在Nginx入口的情况下,您需要一个单一的负载平衡器服务,入口将使用该服务桥接从集群外部到集群内部的流量。之后,您可以为每个工作负载使用clusterIP服务


在上面的示例中,只要正确配置了nginx入口控制器(使用负载平衡器),那么您使用的配置应该可以正常工作。

否,只能从集群内访问clusterIP。入口本质上只是一组第7层转发规则,它不能处理向外部世界公开集群内部的第4层要求。至少需要1个NAT步骤

不过,要让入口工作,您需要至少涉及一个将工作负载暴露在外部的服务,所以需要使用nodePort或loadBalancer。入口控制器和集群的基础结构将决定您需要使用这两种服务中的哪一种

在Nginx入口的情况下,您需要一个单一的负载平衡器服务,入口将使用该服务桥接从集群外部到集群内部的流量。之后,您可以为每个工作负载使用clusterIP服务


在上面的示例中,只要正确配置了nginx入口控制器(使用负载平衡器),那么您使用的配置应该可以正常工作。

简而言之:

现在来看看详细的答案。。。 第一件事首先,让我们看一下

入口公开从集群外部到集群内服务的HTTP和HTTPS路由。
[…]
入口控制器负责实现入口,通常使用负载平衡器

这里混淆的是术语负载平衡器。在上面的定义中,我们讨论的是web负载平衡器中的经典和知名产品。
这件事与库伯内特斯无关

回到定义,要使用
ingres
并使其工作,我们需要一个名为
ingrescontroller
的kubernetes资源。而这个资源恰好是一个负载平衡器!就这样

但是,您必须记住,外部世界的负载平衡器与类型为
type:LoadBalancer
kubernetes服务之间存在差异

总之(为了将外部世界的流量重定向到您的k8s clusterIp服务):

  • 您是否需要负载平衡器使您的
    kind:ingres
    工作?是的,这是
    kind:IngressController
    kubernetes资源
  • 您是否需要kubernetes服务
    type:LoadBalancer
    type:NodePort
    使您的
    kind:ingres
    工作?绝对不是!服务
    type:ClusterIP
    工作正常
      简而言之:

      现在来看看详细的答案。。。 第一件事首先,让我们看一下

      入口公开从集群外部到集群内服务的HTTP和HTTPS路由。
      […]
      入口控制器负责实现入口,通常使用负载平衡器

      这里混淆的是术语负载平衡器。在上面的定义中,我们讨论的是web负载平衡器中的经典和知名产品。
      这件事与库伯内特斯无关

      回到定义,要使用
      ingres
      并使其工作,我们需要一个名为
      ingrescontroller
      的kubernetes资源。而这个资源恰好是一个负载平衡器!就这样

      但是,您必须记住,外部世界的负载平衡器与类型为
      type:LoadBalancer
      kubernetes服务之间存在差异

      总之(为了将外部世界的流量重定向到您的k8s clusterIp服务):

      • 您是否需要负载平衡器使您的
        kind:ingres
        工作?是的,这是
        kind:IngressController
        kubernetes资源
      • 您是否需要kubernetes服务
        type:LoadBalancer
        type:NodePort
        使您的
        kind:ingres
        工作?绝对不是!服务
        type:ClusterIP
        工作正常