首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Python应用程序连接到Kubernetes集群上的Redis

将Python应用程序连接到Kubernetes集群上的Redis
EN

Stack Overflow用户
提问于 2018-07-13 19:30:20
回答 2查看 3K关注 0票数 0

一个带有一个小Python应用程序的坞容器被部署到一个Kubernetes集群中,该集群中运行着一个redis master和一个redis slave服务。Docker容器中的Python无法通过集群连接到redis,因为Python的配置不正确,无法在网络上找到redis

为了使app.py中的Python能够成功地与运行在同一个集群中的redis通信,需要对下面的代码进行哪些特定的更改?

PYTHON应用程序代码

这是app.py

代码语言:javascript
复制
from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "<i>cannot connect to Redis, counter disabled</i>"

    html = "<h3>Hello {name}!</h3>" \
        "<b>Hostname:</b> {hostname}<br/>" \
        "<b>Visits:</b> {visits}"
    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

REDIS服务在相同的KUBERNETES集群

集群中运行的redis masterredis slave来自公共注册中心,通过使用以下JSON运行kubectl apply -f进入集群:

这个链接上的JSON。主复制控制器

红宝石主服务这个链接上的JSON。

Redis从复制控制器这个链接上的JSON。

红系从服务这个链接上的JSON。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-15 07:21:09

为了使app.py中的python应用程序能够成功地与运行在同一个集群中的redis通信,需要对下面的代码进行哪些特定的更改?

代码语言:javascript
复制
redis = Redis(host="redis-master", db=0, socket_connect_timeout=2, socket_timeout=2)

因为您安装的Service名为redis-master,尽管我前面提出的简单更改假设烧瓶应用程序运行在与redis-master Service相同的kubernetes名称空间中。如果这不是真的,则需要将其切换为:

代码语言:javascript
复制
redis = Redis(host="redis-master.whatever-namespace.svc.cluster.local",

并将whatever-namespace替换为实际的、正确的命名空间。如果你不记得或不知道,kubectl get --all-namespaces=true svc | grep redis-master会提醒你。

票数 4
EN

Stack Overflow用户

发布于 2022-05-30 17:17:07

如果redis-master的服务位于烧瓶应用程序部署或pod的相同名称空间中,则在您的烧瓶应用程序的部署文件中使用这个redis-master作为env变量,如果不是相同的名称空间,则使用redis-master.whatever-namespace.svc.cluster.local,但在修改应用程序时肯定使用.env文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51331730

复制
相关文章

相似问题

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