【问题标题】:What does Ingress have to do with Kubernetes service loadbalancer?Ingress 和 Kubernetes 服务负载均衡器有什么关系?
【发布时间】:2019-04-23 07:17:47
【问题描述】:

这是我在 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 入口: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”,我可以从集群外部访问我的服务,但我不明白为什么它被称为“LoadBalancer Ingress”?它与 Ingress 有什么关系?还是每个负载均衡器都配备了一个用于服务公开目的的 Ingress?

【问题讨论】:

  • 你看到的入口不是 kubernetes 入口的东西,它只是亚马逊命名约定,他们在通过外部负载均衡器公开服务时使用这个词
  • 是的,我也觉得有点混乱。

标签: kubernetes kubernetes-ingress internal-load-balancer


【解决方案1】:

Ingress 是对公开内容和方式的抽象定义。通常是指 HTTP(S) 流量,但也可以使用其他模式/协议..

Ingress 控制器是一种特殊的实现,它将使用特定的软件实现您的 Ingress 定义的期望。无论是 Nginx、Traefik 还是其他可能专用于特定云提供商的解决方案。

他们将使用Service 对象作为查找用于到达他们的特定流量的端点的方法。如果这是headlessClusterIPNodePortLoadBalancer 类型的服务,则无关紧要。

也就是说,LoadBalancer 类型的服务将您的服务暴露在一个令人惊讶的负载均衡器上。同样,通常与您的云提供商有关。这是一种完全不同的公开服务方式,NodePort 类型也是如此。

【讨论】:

    猜你喜欢
    • 2022-10-23
    • 1970-01-01
    • 2016-11-11
    • 2020-08-12
    • 2019-07-12
    • 2019-06-06
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    相关资源
    最近更新 更多