Kubernetes Redis HA и доступ к Redis для вещей вне контейнера

Я пытаюсь изучить docker и kubernetes, и одна из вещей, которые я пытаюсь сделать, - это настроить Redis с Sentinel и предоставить Redis для вещей за пределами контейнера.

Установить redis и дозорный было довольно просто после https://github.com/kubernetes/kubernetes/tree/master/examples/storage/redis.

Но теперь мое следующее желание - иметь доступ к Redis за пределами контейнера, и я не могу понять, кому открывать часового и главного модуля.


person Josh    schedule 01.01.2017    source источник


Ответы (1)


Файл службы redis sentinel по вашей ссылке (https://github.com/kubernetes/kubernetes/blob/master/examples/storage/redis/redis-sentinel-service.yaml) откроет модули в кластере. Для внешнего доступа (извне кластера) вы можете использовать NodePort:

apiVersion: v1
kind: Service
metadata:
  labels:
    name: sentinel
    role: service
  name: redis-sentinel
spec:
  type: NodePort
  ports:
    - port: 26379
      targetPort: 26379
      nodePort: 30369
  selector:
    redis-sentinel: "true"

Это откроет порт 30369 на всех ваших хостах из внешнего мира для службы redis sentinel.

Несколько замечаний по этому поводу: * Брандмауэр: безопасность в Redis ограничена, поэтому предотвращайте нежелательный доступ перед открытием порта * Разрешенный диапазон nodePort составляет от 30000 до 32767, поэтому будьте изобретательны с этим ограничением.

person Norbert van Nobelen    schedule 02.01.2017
comment
Норберт спасибо за ответ. Мой следующий вопрос может не относиться к redis sentinel, но я считаю, что это так. Разве дозорный не вернет IP-адрес модуля вместо услуги, если что-то изменится? Я заметил это, когда пытался настроить кластер Redis и предоставить каждому модулю службу, которая будет возвращать IP-адрес модуля вместо IP-адреса службы, что делает невозможным / трудным / за пределами моих знаний использование с кубернетами. Есть ли способ заставить его работать и в этой ситуации? (Думая о кластере Redis и таких вещах, как Cassandra или Kafka) Возможно, вам понадобится отдельный вопрос - person Josh; 03.01.2017
comment
На самом деле я запускаю redis в кубернетах без дозорного: если redis работает как процесс 1 в контейнере (что происходит, когда вы используете эти контейнеры), кубернетес уже выполняет работу дозорного (ИМХО) за вас. - person Norbert van Nobelen; 03.01.2017
comment
Вы когда-нибудь находили решение для того, чтобы дозорный вернул мастер Redis ClusterIP, который недоступен за пределами кластера? - person afreeland; 15.03.2018
comment
Удалось ли вам обойти это? Я столкнулся с аналогичной проблемой - person rajatsaurastri; 19.05.2020
comment
Мы отказались от Redis в пользу aerospike. В части высокой доступности redis есть много сбоев: например, она не устойчива к ошибкам IP-адресов. Конфигурация Aerospike лучше: ему гораздо лучше удается выжить в динамике k8s. - person Norbert van Nobelen; 19.05.2020