gpt4 book ai didi

nginx - 在没有 GCP 负载均衡器的情况下创建 kubernetes nginx ingress

转载 作者:IT王子 更新时间:2023-10-29 01:05:01 25 4
gpt4 key购买 nike

所以我在一个副项目中使用 Kubernetes,它很棒。运行一个像我现在这样的小项目会更便宜(一个 3-5 个实例的小集群基本上可以提供我需要的一切,在 GCP 上每月大约 30 美元)。

我唯一遇到困难的领域是尝试使用 kubernetes Ingress 资源映射到集群并扇出到我的微服务(它们是小型 Go 或 Node 后端)。我有入口的配置设置以映射到不同的服务,那里没有问题。

我了解到,当您创建入口资源时,您可以真正轻松地让 GCP 启动 LoadBalancer。这很好,但它也意味着另外 20 美元/月会增加项目成本。一旦/如果这件事得到了一些牵引力,那可以忽略,但现在也是为了更好地理解 Kubernetes,我想做以下事情:

  • 从 GCP 获取静态 IP,
  • 将其与入口资源一起使用
  • 在同一集群中托管负载均衡器(使用 nginx 负载均衡器)
  • 避免为外部负载均衡器付费

有什么方法甚至可以使用 Kubernetes 和入口资源来完成吗?

谢谢!

最佳答案

是的,这是可能的。部署入口 Controller ,并使用 NodePort 服务部署它。示例:

---
apiVersion: v1
kind: Service
metadata:
name: nginx-ingress-controller
namespace: kube-system
labels:
k8s-app: nginx-ingress-controller
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
nodePort: 32080
protocol: TCP
name: http
- port: 443
targetPort: 443
nodePort: 32443
protocol: TCP
name: https
selector:
k8s-app: nginx-ingress-controller

现在,创建一个带有 DNS 条目的入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: myapp.example.com
http:
paths:
- path: /
backend:
serviceName: my-app-service #obviously point this to a valid service + port
servicePort: 80

现在,假设您的静态 IP 连接到任何运行 kube-proxy 的 kubernetes 节点,将 DNS 更新为指向静态 IP,您应该能够访问 myapp.example.com:32080 入口会将您映射回您的应用。

一些额外的事情:

如果您想使用低于 32080 的端口,请记住您使用的是 CNI 网络,you'll have trouble with hostport .建议在端口 80 上监听负载均衡器,我想你可以只设置 nginx 来执行代理传递,但这变得困难。这就是为什么建议您的云提供商使用负载均衡器的原因:)

关于nginx - 在没有 GCP 负载均衡器的情况下创建 kubernetes nginx ingress,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43189487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com