Подключить приложение python к redis на кластере кубернетов

Решение по использованию списка осей abevieiramota работает очень хорошо, пока вы не используете только один ряд изображений, как указано в комментариях. Использование разумного соотношения сторон для figsize помогает, но все еще далек от совершенства. Например:

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(9.75, 3))
for ax in axes.flat:
    im = ax.imshow(np.random.random((10,10)), vmin=0, vmax=1)

fig.colorbar(im, ax=axes.ravel().tolist())

plt.show()

Функция colorbar предоставляет параметр shrink, который является коэффициентом масштабирования для размер осей цветной панели. Это требует некоторых ручных проб и ошибок. Например:

fig.colorbar(im, ax=axes.ravel().tolist(), shrink=0.75)

0
задан CodeMed 13 July 2018 в 19:30
поделиться

1 ответ

Какие конкретные изменения необходимо внести в код ниже, чтобы приложение python в app.py могло успешно общаться с redis, работающим в одном кластере?

redis = Redis(host="redis-master", db=0, socket_connect_timeout=2, socket_timeout=2)

, потому что установленный вами Service имеет имя redis-master , хотя это простое изменение, предложенное выше , предполагает , что приложение флэша работает в том же kubernetes namespace как redis-master Service. Если это неверно, вам нужно переключить его на чтение:

redis = Redis(host="redis-master.whatever-namespace.svc.cluster.local",

и заменить whatever-namespace на фактическое, правильное пространство имен. Если вы не помните или не знаете, kubectl get --all-namespaces=true svc | grep redis-master напомнит вам.

2
ответ дан Matthew L Daniel 17 August 2018 в 12:11
поделиться
  • 1
    Я попробую это завтра и отчитаю. – CodeMed 16 July 2018 в 00:06
  • 2
    Это работает, поэтому я отмечаю, что он имеет принятый ответ. Спасибо. Но для обучения других читателей, включая меня, можете ли вы рассказать обо всех четырех аргументах в команде redis = Redis(host="redis-master", db=0, socket_connect_timeout=2, socket_timeout=2)? Я хотел бы понять, что это на самом деле делает, и вы объясняете только имя хоста в своей текущей версии ответа. – CodeMed 17 July 2018 в 00:45
  • 3
    ну, не все 4 аргумента, нет; для этого есть много документации. Но часть host= состоит в том, что кубернете имеет свой собственный DNS-сервер, в котором каждый Service зарегистрирован под своим полностью квалифицированным «именем кластера», что означает name: Service и его namespace: , а затем svc.cluster.local (который один может настроить, но я никогда не видел, чтобы такое происходило). Из-за того, как работает resolv.conf, до тех пор, пока путь поиска DNS совпадает, вы можете просто использовать имя Service, что, по-видимому, работает в вашем случае. – Matthew L Daniel 18 July 2018 в 03:11
Другие вопросы по тегам:

Похожие вопросы: