2024-05-14 01:22:26 发布
网友
我有一个Kubernetes服务(一个Python Flask应用程序)在端口30000上公开(根据我的理解,所有Kubernetes nodeport必须在30000-32767范围内)使用LoadBalancer类型。我需要在标准HTTP端口80上访问我的面向公众的服务。做这个最好的方法是什么?
如果不使用任何cloudproviders,只需在服务中设置externalIPs选项并在节点上设置此IP,kube代理将为您将流量从该IP路由到pod。
externalIPs
{ "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
如果您想使用云提供商的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/
如果不使用任何cloudproviders,只需在服务中设置
externalIPs
选项并在节点上设置此IP,kube代理将为您将流量从该IP路由到pod。https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
如果您想使用云提供商的LB,假设您的应用程序在端口8080上公开,并且您想在端口80上公开,那么以下是配置的外观:
另一种选择是使用入口控制器,例如Nginx。
https://kubernetes.io/docs/concepts/services-networking/ingress/
相关问题 更多 >
编程相关推荐