访问端口80上的Kubernetes服务

2024-05-14 01:22:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Kubernetes服务(一个Python Flask应用程序)在端口30000上公开(根据我的理解,所有Kubernetes nodeport必须在30000-32767范围内)使用LoadBalancer类型。我需要在标准HTTP端口80上访问我的面向公众的服务。做这个最好的方法是什么?


Tags: 方法端口应用程序httpflask类型标准面向
2条回答

如果不使用任何cloudproviders,只需在服务中设置externalIPs选项并在节点上设置此IP,kube代理将为您将流量从该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

如果您想使用云提供商的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/

相关问题 更多 >