我有一个使用LoadBalancer类型的Kubernetes服务(一个Python Flask应用程序),它在端口30000上公开(据我所知,所有Kubernetes NodePorts必须在30000-32767范围内)。我需要在标准HTTP端口80上访问我的面向公众的服务。做这件事最好的方法是什么?
发布于 2016-11-03 07:25:51
如果您想要使用云提供商的LB,假设您的应用程序在端口8080上公开,并且您想要在端口80上公开它,下面是配置应该是什么样子:
apiVersion: v1
kind: Service
metadata:
name: flask_app
labels:
run: flask_app
namespace: default
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
run: flask_app
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: flask_app
namespace: default
spec:
replicas: 1
strategy:
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
type: RollingUpdate
template:
metadata:
labels:
run: flask_app
spec:
restartPolicy: Always
terminationGracePeriodSeconds: 60
containers:
- name: flask_app
image: repo/flask_app:latest
ports:
- containerPort: 8080
imagePullPolicy: Always另一种选择是使用入口控制器,例如Nginx。
https://kubernetes.io/docs/concepts/services-networking/ingress/
发布于 2016-11-03 12:37:17
如果您不使用任何云提供商,您只需在服务中设置externalIPs选项,并在节点上搭建此IP,kube-proxy会为您将此IP的流量路由到您的pod。
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "my-service"
},
"spec": {
"selector": {
"app": "MyApp"
},
"ports": [
{
"name": "http",
"protocol": "TCP",
"port": 80,
"targetPort": 9376
}
],
"externalIPs" : [
"80.11.12.10"
]
}
}https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
https://stackoverflow.com/questions/40387264
复制相似问题