mar*_*mas 15 nginx google-cloud-platform kubernetes google-kubernetes-engine kubernetes-ingress
所以我将 Kubernetes 用于一个副项目,它很棒。为我所从事的小型项目运行更便宜(3-5 个实例的小集群基本上可以在 GCP 上以大约 30 美元/月的价格提供我所需的一切)。
我唯一遇到困难的地方是尝试使用 kubernetes Ingress 资源映射到集群并扇出到我的微服务(它们是小型 Go 或 Node 后端)。我有将入口映射到不同服务的配置设置,那里没有问题。
我知道当你创建一个入口资源时,你真的可以很容易地让 GCP 启动一个 LoadBalancer。这很好,但它也代表了另外 20 美元/月,增加了项目成本。一旦/如果这件事得到一些关注,那可以忽略不计,但现在以及为了更好地理解 Kubernetes,我想执行以下操作:
有什么办法甚至可以使用 Kubernetes 和入口资源来完成吗?
谢谢!
是的,这是可能的。部署您的入口控制器,并使用 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
Run Code Online (Sandbox Code Playgroud)
现在,使用 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
Run Code Online (Sandbox Code Playgroud)
现在,假设您的静态 IP 连接到任何运行 kube-proxy 的 kubernetes 节点,更新 DNS 以指向静态 IP,您应该能够访问myapp.example.com:32080
并且入口会将您映射回您的应用程序。
一些额外的事情:
如果您想使用低于 32080 的端口,那么请记住,如果您使用的是 CNI 网络,则使用 hostport 会遇到问题。建议让负载均衡器监听 80 端口,我想你可以只设置 nginx 来执行代理传递,但这变得很困难。这就是为什么建议使用您的云提供商的负载均衡器的原因:)
归档时间: |
|
查看次数: |
4686 次 |
最近记录: |