#mongodb #azure #kubernetes #azure-aks #kubernetes-mongodb-sidecar
#mongodb #azure #kubernetes #azure-aks #kubernetes-mongodb-sidecar
Вопрос:
Я пытаюсь сделать свой существующий mongodb высокодоступным путем создания реплик. чтобы выполнить это, я воспользовался ссылкой на описание ссылки здесь
ниже приведен мой набор с сохранением состояния
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: skeleton-mongodb
spec:
serviceName: skeleton-mongodb
replicas: 3
selector:
matchLabels:
app: skeleton-mongodb
template:
metadata:
labels:
app: skeleton-mongodb
spec:
containers:
- name: mongodb
image: mongo:4
resources:
requests:
memory: 250Mi
cpu: 100m
limits:
memory: 500Mi
ports:
- containerPort: 27017
name: mongo
args:
- "--bind_ip_all"
- "--replSet"
- rs0
volumeMounts:
- name: skeleton-mongodb-data
mountPath: /data/db
- name: skeleton-mongodb-init
mountPath: /docker-entrypoint-initdb.d
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
configMapKeyRef:
name: skeleton
key: mongo_root-username
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: skeleton
key: mongodb_root-password
- name: MONGO_INITDB_DATABASE
valueFrom:
configMapKeyRef:
name: skeleton
key: mongo_db
- name: MONGO_USERNAME
valueFrom:
configMapKeyRef:
name: skeleton
key: mongo_username
- name: MONGO_USER_PASSWORD
valueFrom:
secretKeyRef:
name: skeleton
key: mongodb_user-password
- name: mongo-sidecar
image: cvallance/mongo-k8s-sidecar
env:
- name: MONGO_SIDECAR_POD_LABELS
value: "app=skeleton-mongodb"
- name: MONGODB_DATABASE
valueFrom:
configMapKeyRef:
name: skeleton
key: mongo_db
- name: MONGODB_USERNAME
valueFrom:
configMapKeyRef:
name: skeleton
key: mongo_username
- name: MONGODB_PASSWORD
valueFrom:
secretKeyRef:
name: skeleton
key: mongodb_user-password
volumes:
- name: skeleton-mongodb-init
configMap:
name: common-mongodb-init
volumeClaimTemplates:
- metadata:
name: skeleton-mongodb-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: managed-premium
когда я пытаюсь найти, какой модуль является моим основным, я не могу найти какой-либо модуль в качестве основного.
for ((i = 0; i < 3; i));
do
kubectl exec --namespace default skeleton-mongodb-$i -- sh -c 'mongo --eval="printjson(rs.isMaster())"';
done
я получаю для всех 3 модулей
{
"ismaster" : false,
"secondary" : false,
"info" : "Does not have a valid replica set config",
"isreplicaset" : true,
....
"readOnly" : false,
"ok" : 1
}
не уверен, что я чего-то не хватает
Ответ №1:
Я недостаточно знаю MongoDB, чтобы советовать, но с StatefulSet
у вас будет точно такая же конфигурация для всех реплик.
Комментарии:
1. Я ищу данные для репликации в наборе с сохранением состояния. это может быть достигнуто с помощью основных, подчиненных модулей. но я не могу ее увидеть.