Я пытаюсь запустить кластер Redis в Kubernetes. Я не планирую сохранять какие-либо данные Redis на диск. Можно ли запустить кластер Redis как развертывание Kubernetes, а не как набор с отслеживанием состояния?
Развертывание Redis в Kubernetes
Ответы (2)
Да, хотя я бы, вероятно, по-прежнему использовал StatefulSet специально для функций, чтобы обеспечить запуск только одного модуля за раз.
person
coderanger
schedule
06.04.2020
Спасибо, но зачем нам эта функция, т.е. запуск только одного модуля? Разве у нас не должно быть несколько модулей, работающих для обеспечения высокой доступности и балансировки нагрузки?
- person Sashi; 06.04.2020
Да, будет работать несколько, StatefulSets просто убедитесь, что они запускаются по одному, чтобы у вас не возникло проблемы с паническим бегством, пытающимся присоединиться к кластеру сразу.
- person coderanger; 06.04.2020
Все доступные примеры показывают, что кластер Redis развертывается как комбинация StatefulSets и PersistentVolumes Kubernetes. Это также имеет смысл, поскольку каждый экземпляр Redis зависит от файла конфигурации, который отслеживает другие экземпляры кластера и их роли. Известны ли вам примеры развертывания Redis в кластере с помощью контроллера развертывания?
- person Sashi; 16.04.2020
да, можно сохранять данные в PVC с наборами с отслеживанием состояния, однако в диаграмме управления для кластера HA Redis они используют только наборы с отслеживанием состояния:
apiVersion: v1
kind: Service
metadata:
name: redis
spec:
ports:
- port: 6379
name: redis
clusterIP: None
selector:
app: redis
---
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
name: redis
spec:
selector:
matchLabels:
app: redis
serviceName: redis
replicas: 1
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: redislabs/redis
args: ["--requirepass", "admin", "--appendonly", "yes", "--save", "900", "1", "--save", "30", "2"]
ports:
- containerPort: 6379
name: redis
resources:
limits:
cpu: .50
memory: 1500Mi
requests:
cpu: .25
memory: 1024Mi
volumeMounts:
- name: redis-volume
mountPath: /data
volumeClaimTemplates:
- metadata:
name: redis-volume
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 20Gi
person
Harsh Manvar
schedule
06.04.2020
Да, я видел схему руля и отсюда вопрос. Зачем нужны наборы с состоянием? Почему мы не можем просто использовать контроллер развертывания и запустить развертывание без сохранения состояния?
- person Sashi; 06.04.2020
Я надеюсь, что у вас есть представление о приложениях без сохранения состояния и с сохранением состояния. когда приложение ничего не хранит в памяти или на томе, вы можете использовать развертывание без сохранения состояния, однако использование с отслеживанием состояния, когда приложение хранит что-либо в памяти, поэтому всегда следите за тем, чтобы реплики запускались после того, как одна из них завершается правильно.
- person Harsh Manvar; 06.04.2020
Согласен, но в моем случае я не использую какой-либо постоянный том, и я могу потерять свои данные в памяти. Почему я все еще должен определять набор Stateful для Redis?
- person Sashi; 06.04.2020