首页 文章

Ingress与Kubernetes服务负载均衡器有什么关系?

提问于
浏览
0

这是我在k8s.yml文件中定义的:

apiVersion: v1
kind: Service
metadata:
  name: myservice
  namespace: mynamespace
  labels:
    app: myservice
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
    external-dns.alpha.kubernetes.io/hostname: "myservice."
spec:
  selector:
    app: myservice
  type: LoadBalancer
  ports:
  - name: http
    port: 8080
    targetPort: 8080
    protocol: TCP

运行此命令:

kubectl describe service myservice

给我这样的“LoadBalancer Ingress”:

类型:LoadBalancer IP:25.0.162.225 LoadBalancer Ingress:internal-a9716e ...... us-west-2.elb.amazonaws.com

据我所知,我使用的发布类型是"LoadBalancer",这有助于我将我的服务暴露给外部IP地址(请参阅https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/) . 而Ingress是一个不同的东西,它位于服务的前面,我没有在我的yml文件中定义它 . (参考:https://medium.com/google-cloud/kubernetes-nodeport-vs-loadbalancer-vs-ingress-when-should-i-use-what-922f010849e0)随着"LoadBalancer Ingress"我'm able to access my Service from outside the cluster, but I don' t理解为什么它被称为"LoadBalancer Ingress"?它与Ingress有什么关系?或者每个负载均衡器是否都配备了Ingress用于服务暴露目的?

1 回答

  • 1

    Ingress是揭示内容和方式的抽象定义 . 通常是指HTTP(S)流量,但有些摆弄也可以是其他模式/协议 .

    Ingress Controller是一个特殊的实现,它将使用特定的软件实现Ingress定义的期望 . 无论是Nginx,Traefik还是其他一些可能致力于特定 Cloud 提供商的解决方案 .

    他们将使用 Service 对象来查找用于到达特定流量的 endpoints 的 endpoints . 如果这是 headlessClusterIPNodePortLoadBalancer 类型的服务,则无关紧要 .

    也就是说, LoadBalancer 类型的服务在一个惊喜的负载均衡器上暴露你的服务 . 同样,通常与您的 Cloud 提供商有关 . 这是一种完全不同的公开服务的方式,就像 NodePort 类型一样 .

相关问题