所以我正在使用Kubernetes进行辅助项目,这很棒.对于像我所参与的项目这样的小型项目,运行成本较低(3-5个实例的小型集群基本上可以满足我每月在GCP上花费约30美元所需要的一切).
我苦苦挣扎的唯一领域是尝试使用kubernetes Ingress资源映射到集群并扇出到我的微服务(它们是小型的Go或Node后端).我有用于入口的配置设置,可以映射到不同的服务,那里没有问题.
我了解您在创建入口资源时确实可以很轻松地让GCP启动LoadBalancer.很好,但也代表着每月20美元的价格,这增加了该项目的成本.一旦/如果这件事引起了一定的关注,可以忽略不计,但是现在并且为了更好地了解Kubernetes,我想执行以下操作:
>从GCP获取静态IP,
>与入口资源一起使用
>将负载均衡器托管在同一集群中(使用Nginx负载均衡器)
>避免为外部负载均衡器付费
有没有办法甚至可以使用Kubernetes和入口资源来完成呢?
谢谢!
最佳答案
是的,这是可能的.部署您的入口控制器,并使用NodePort服务进行部署.例:
原文链接:https://www.f2er.com/nginx/532333.html---
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来进行代理传递,但变得困难.这就是为什么建议与您的云提供商一起使用负载平衡器的原因:)