在没有负载均衡器的情况下公开容器
Exposing containers without a load balancer
我打算将一个小型测试应用程序部署到 GCE。我读过的每份指南似乎都指向使用 LoadBalancer
服务将 pod 公开到互联网。不幸的是,这带来了很高的相关成本,我希望能够在不创建负载均衡器(或使用 HAProxy / nginx 来滚动我们自己的负载均衡器)的情况下公开容器。
可以吗?如果是这样,我需要采取哪些步骤以及可能的其他相关费用?
谢谢!
您可以通过选择 NodePort 作为服务类型来实现。
apiVersion: v1
kind: Service
metadata:
name: myapp-servoce
labels:
name: myapp
context: mycontext
spec:
type: NodePort
ports:
# the port that this service should serve on
- port: 8080
# label keys and values that must match in order to receive traffic for this service
selector:
name: myapp
context: mycontext
这将在集群的每个节点的端口 8080 上公开该服务。现在您的所有节点都将具有外部可访问的 IP 地址,您可以使用相同的 IP 地址进行测试
在 https://github.com/kubernetes/ingress/tree/master/controllers/nginx 找到的 NGINX 入口控制器应该可以满足您的成本节约要求。我不会考虑这个 "rolling your own" 因为它位于 GLBC 入口控制器旁边。
应该有足够的文档来满足您的安装要求,如果没有,请在 https://github.com/kubernetes/ingress
上提出问题
我打算将一个小型测试应用程序部署到 GCE。我读过的每份指南似乎都指向使用 LoadBalancer
服务将 pod 公开到互联网。不幸的是,这带来了很高的相关成本,我希望能够在不创建负载均衡器(或使用 HAProxy / nginx 来滚动我们自己的负载均衡器)的情况下公开容器。
可以吗?如果是这样,我需要采取哪些步骤以及可能的其他相关费用?
谢谢!
您可以通过选择 NodePort 作为服务类型来实现。
apiVersion: v1
kind: Service
metadata:
name: myapp-servoce
labels:
name: myapp
context: mycontext
spec:
type: NodePort
ports:
# the port that this service should serve on
- port: 8080
# label keys and values that must match in order to receive traffic for this service
selector:
name: myapp
context: mycontext
这将在集群的每个节点的端口 8080 上公开该服务。现在您的所有节点都将具有外部可访问的 IP 地址,您可以使用相同的 IP 地址进行测试
在 https://github.com/kubernetes/ingress/tree/master/controllers/nginx 找到的 NGINX 入口控制器应该可以满足您的成本节约要求。我不会考虑这个 "rolling your own" 因为它位于 GLBC 入口控制器旁边。
应该有足够的文档来满足您的安装要求,如果没有,请在 https://github.com/kubernetes/ingress
上提出问题