首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes我需要在定向时包含port吗?

Kubernetes我需要在定向时包含port吗?
EN

Stack Overflow用户
提问于 2019-11-04 00:09:06
回答 1查看 45关注 0票数 0

我有一个在K8s中运行的应用程序。它有3个微服务和前面的nginx。每个重定向都会首先通过nginx,并按照指定的方式进行代理。我的flask应用程序在没有端口号的情况下重定向有问题。我通过minikube在本地运行k8s。每当我重定向到另一个页面时,url不包含端口号,这会抛出一个错误。

代码语言:javascript
复制
if usernamedata == None:
    print("Could not log in")   
else:
    if passworddata == password:
        print("Logged in")
        return redirect("/user/{0}".format(username))

Nginx是唯一公开的服务,它的url是http://192.168.99.107:31699,我在flask中重定向,我被重定向到Nginx,这使我的连接被拒绝。如果我添加端口号并将其设置为http://192.168.99.107:31699/user/David,它可以正常工作。重定向时需要指定端口号吗?如果服务关闭并重新创建,该怎么办?另外,这是我对nginx的服务定义:

代码语言:javascript
复制
kind: Service
apiVersion: v1
metadata:
  name: nginx
  labels:
    svc: nginx
spec:
  selector:
    app:  nginx-app
  type: LoadBalancer
  ports:
   - port:  80

如何在flask应用程序中进行重定向?

EN

回答 1

Stack Overflow用户

发布于 2019-11-04 00:21:07

如果服务已关闭并重新创建,并且您希望为服务保留相同的高端口号,则需要指定nodePort并将服务类型更改为NodePort

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: my-service
  labels:
    svc: nginx
spec:
  type: NodePort # type is set to NodePort
  ports:
  - port: 80 # Service's internal cluster IP
    targetPort: 80 # target port of the backing pods
    nodePort: 31699 # service will be only available via this port for each cluster node if recreated
  selector:
    app:  nginx-app

在Python代码中(如果Service在Pod之前启动):

代码语言:javascript
复制
import os 

...
service_host = os.environ.get("NGINX_SERVICE_HOST")
service_port = os.environ.get("NGINX_SERVICE_PORT")
...
redirect(f"http://{service_host}:{service_port}/user/{username}")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58682020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档