当前位置: 首页 > 知识库问答 >
问题:

无节点端口的Kubernetes入口控制器

华誉
2023-03-14

我们正在GKE(谷歌kubernetes引擎)上运行一个API服务器。我们使用Google云endpoint和API密钥处理授权。我们将每个API密钥上的某些IP地址列为白名单。为了做到这一点,我们必须将负载平衡器转换为入口控制器,以公开我们的API服务器。IP白名单不适用于loadbalancer服务。现在,我们有一个类似以下内容的入口设置:

apiVersion: v1
kind: Service
metadata:
  name: echo-app-nodeport
spec:
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
    name: http
  selector:
    app: esp-echo
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: echo-app-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "RESERVED_IP"
    kubernetes.io/ingress.allow-http: "false"
spec:
  tls:
  - secretName: SECRET_NAME
  backend:
    serviceName: echo-app-nodeport
    servicePort: 80

共有2个答案

盛建德
2023-03-14

我怀疑GKE入口实际上在您的GKE集群之外,并通过Nodeport将流量转发到您的集群。这可能就是为什么通过ClusterIP公开的GKE入口和服务的设置不起作用的原因。

如果您在GKE集群上部署NGINX入口控制器,它将从您的集群中创建一个入口网关(而不是转发到您的集群),并能够与通过ClusterIP公开的服务进行通信。

易成双
2023-03-14

对于所有工作负载吊舱,您只能使用ClusterIP类型的服务,并且可以使用一个负载平衡器服务将入口控制器本身暴露在集群之外。这样就可以完全避免NodePort服务。

 类似资料:
  • 我在RedHat EC2实例上安装了Minikube v1.3.1以进行一些测试。 由于nginx-ingress-控制器默认使用的端口已经在使用中,我正在尝试在部署中更改它们,但没有结果。有人能建议如何做吗? 如何知道端口已在使用? 当我使用命令kubectl-n kube system get deployment | grep nginx列出系统吊舱时,我得到: nginx入口控制器0/1

  • 我正在AWS EKS上设置NGINX入口控制器。 我浏览了k8s入口资源,它非常有助于理解我们将LB端口映射到k8s服务端口,例如file Def。我安装了nginx控制器,直到必要的步骤。然后教程指示我创建一个入口资源。 我错过了什么?

  • 这是港口范围。我不确定这是否重要(我不确定DNAT和SNAT是否使用端口),但范围似乎远高于16K。 还有什么可能限制通过iptables/netfilter转发的并发连接的数量吗?

  • 是否可以在没有负载均衡器的情况下在库伯内特斯中使用入口控制器功能(在数字海洋中)。 是否有其他机制允许域名映射到Kubernetes服务;例如,如果我在Kubernetes集群上托管两个WordPress站点: == 域名如何在不显式输入端口号的情况下映射到容器端口8080。 感谢任何帮助。

  • 我正在云中的AWS EKS服务上运行我的工作负载。我可以看到没有默认的入口控制器可用(因为它可用于GKE),我们必须选择第三方。 我决定使用Traefik。在跟踪文档和其他资源(像这样)之后,我觉得使用Traefik作为IngresController不会自动在云中创建LoadBalancer。我们必须手动完成它来设置所有内容。 如何使用Traefik作为Kubernetes入口,就像其他入口控制

  • 我在我的本地集群中安装入口控制器时遇到了一些问题(使用Kubes祈祷创建,运行MetalLB创建LoadBalancer。)。 我尝试使用nginx、traefik和kong,但都得到了相同的结果。 我正在使用以下值安装nginx helm图表。yaml: 使用命令: 当我在集群中部署入口控制器时,会创建一个服务(例如nginx的nginx-ingress-控制器)。此服务属于LoadBalanc