kubernetes外部访问问题

kubernetes外部访问问题

我有一个在 AWS 中运行的 Kubernetes 集群。 Kubes Worker 位于私有子网中,Master 位于公共子网中。

集群工作正常。现在我将在一个 pod 中使用 3 个容器进行部署,并且 3 个端口将作为这些容器的服务公开。

我想从互联网访问这个 Pod。即在外面。

我们无法为每个 Pod 部署负载均衡器,因为将有 500 个 Pod,我们该如何做到这一点

答案1

我知道我们讨论过这个问题,但我想我也会在这里回答这个问题,这样其他人可能会知道一个可能的解决方案。

据我了解,您需要一个入口控制器,该控制器可用于将传入流量路由到请求的服务/部署。

IE; this.example.com 将是您的域。

您已经部署了一个由多个容器组成的 Pod。

理论上,您可以进行以下入口设置;

apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-ingress annotations: kubernetes.io/ingress.class: nginx ingress.kubernetes.io/rewrite-target: / spec: tls: - hosts: - this.example.com secretName: my-tls rules: - host: this.example.com http: paths: - path: /one backend: serviceName: this-deploy servicePort: 80 - path: /two backend: serviceName: this-deploy servicePort: 9000 - path: /three backend: serviceName: this-deploy servicePort: 8080

在此入口中,我们指定了相同的服务,但每个服务都有不同的端口。

当用户导航到this.example.com/one流量进入入口控制器设置时,它会检查是否有任何匹配的规则,以及是否有一些规则会将流量引导至服务。

服务本身将有一个端点,流量将定向到该端点。这将是 Pod(或者如果您有许多副本,则其中任何一个)。

这些资源可能有助于设置入口控制器。

https://hub.kubeapps.com/charts/stable/nginx-ingress https://github.com/kubernetes/ingress-nginx

相关内容