Как установить и запустить MongoDB в Kubernetes?
MongoDB известен как сервер базы данных, ориентированный на документы. Нью-йоркская организация под названием 10 gen создавала платформу как службу, аналогичную Windows Azure, а затем разработала MongoDB как PAAS (платформа как услуга) в 2007 году, а затем выпустила ее как базу данных с открытым исходным кодом. server в 2009 году, а затем компания приобрела популярность как MongoDB Inc, где слово Mongo происходит от Humongous. Проще говоря, мы можем определить его как продукт сервера базы данных с открытым исходным кодом, который используется для хранения документов. Здесь описывается каждый компонент, необходимый для использования MongoDB в Kubernetes, а также то, как сделать коллекцию доступной за пределами Kubernetes. Также как выполнять основные задачи в MongoDB. Для новичка создание отдельных разделов с одновременным пониманием необходимых шагов — отличный способ узнать о Kubernetes и MongoDB.
Манифесты кластера MongoDB Kubernetes
Все Kubernetes Mongdb YAML, используемые в этом руководстве, размещены на Github. Клонируйте репозиторий для справки и использования.
https://github.com/yashjeswani63/kubernetes-mongodb
Мы определили все файлы MongoDB Kubernetes YAML. Если вы не хотите создавать каждый манифест, просто скомпилируйте репозиторий и выполните следующую команду из скомпилированного списка.
kubectl apply -f
После установки MongoDB в Kubernetes, чтобы очистить записи, выполните следующие действия.
kubectl delete -f
Начнем с настройки.
Создание секретов MongoDB
Секреты в Kubernetes — это объекты, используемые для предоставления судам конфиденциальной информации. Они аналогичны ConfigMaps с той разницей, что данные хранятся в закодированном формате. Для безопасности нашей модели MongoDB целесообразно ограничить доступ к веб-сайту паролем. Мы будем использовать секреты для монтирования нужных паролей в контейнеры. Сохраните следующий манифест:
mongodb-secrets.yaml
apiVersion: v1
data:
password: cGFzc3dvcmQxMjM=
username: YWRtaW51c2Vy
kind: Secret
metadata:
creationTimestamp: null
name: mongo-creds
Создайте секрет.
kubectl apply -f mongodb-secrets.yaml
Мы войдем, используя эту информацию.
Создать постоянный том MongoDB
Нам нужны тома, чтобы отслеживать данные. Таким образом, даже если наш pod выйдет из строя — данные не потеряются. Для Kubernetes есть два важных момента для создания томов.
- PersistentVolumes (PV) : вещи, которые помещают карту в хранилище. Это часть хранилища в коллекции, предоставленной администратором.
- Continuous Volume Claims (PVC) : элементы Kubernetes, которые служат приложениями для хранения. Kubernetes ищет PV там, где можно запросить пространство и выделить его для PVC. PVC работает, только если в коллекции Kubernetes включена гибкая поставка томов.
Давайте создадим один PVC для нашей модели MongoDB. Сохраните следующее как mongodb-pvc.yaml.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc
spec:
storageClassName: “”
accessModes:
– ReadWriteOnce
volumeName: pv
resources:
requests:
storage: 1Gi
Создайте PV.
kubectl create -f mongodb-pvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-data
spec:
accessModes:
– ReadWriteOnce
capacity:
storage: 1Gi
hostPath:
path: /data/mongo
Развертывание развертывания MongoDB
Давайте сейчас создадим пост. Я снова добавил описание почтового файла MongoDB в конце этого раздела. Сохраните следующий манифест как mongodb-deployment.yaml. Здесь мы используем официальный образ mongo из Docker Hub.
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mongo
name: mongo
spec:
replicas: 1
selector:
matchLabels:
app: mongo
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mongo
spec:
containers:
– image: mongo
name: mongo
args: [“–dbpath”,”/data/db”]
livenessProbe:
exec:
command:
– mongo
– –disableImplicitSessions
– –eval
– “db.adminCommand(‘ping’)”
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 6
readinessProbe:
exec:
command:
– mongo
– –disableImplicitSessions
– –eval
– “db.adminCommand(‘ping’)”
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 6
env:
– name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: mongo-creds
key: username
– name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongo-creds
key: password
volumeMounts:
– name: “mongo-data-dir”
mountPath: “/data/db”
volumes:
– name: “mongo-data-dir”
persistentVolumeClaim:
claimName: “pvc”
Создать использование.
kubectl apply -f mongodb-deployment.yaml
Приложение YAML MongoDB имеет множество функций, таких как env vars из секретов, зондов и т. д. Давайте углубимся в то, что делает каждая часть.
Подключение к MongoDB извне
Давайте попробуем получить доступ к базе данных без коллекции. Для этого нам нужно создать еще одну службу Kubernetes. Сервисы в Kubernetes — это то, что модули используют для связи. Службы типа ClusterIP часто используются для связи между модулями. Для начала важно знать, что существует два типа сервисов ClusterIP:
- Безголовые услуги
- Услуги
Стандартные сервисы Kubernetes служат для балансировки нагрузки и следуют циклическому принципу распределения груза. Безголовые сервисы не работают как балансировщики нагрузки. Кроме того, Kubernetes предоставляет стандартные услуги для IP-адресов, в то время как услуги Headless недоступны. Безголовые службы чаще всего используются при использовании приложений с сохранением состояния.
В случае с нашим примером канала MongoDB мы будем использовать стандартный сервис с Nodeport 32000, так как мы используем тип доставки. Давайте создадим службу типа NodePort. Загрузите службу Kubernetes MongoDB ниже YAML как mongodb-nodeport-svc.yaml.
apiVersion: v1
kind: Service
metadata:
labels:
app: mongo
name: mongo-nodeport-svc
spec:
ports:
– port: 27017
protocol: TCP
targetPort: 27017
nodePort: 32000
selector:
app: mongo
type: NodePort
status:
loadBalancer:{}
Создайте SVC-файл.
kubectl create -f mongodb-nodeport-svc.yaml
Для подключения за пределами коллекции Kubernetes необходимо использовать IP-адрес сотрудника коллекции Kubernetes или адрес балансировки нагрузки. Если вы подписаны на Minikube, вы можете использовать minikube IP для подключения. Чтобы определить IP-адрес minikube или URL-адреса службы, используйте следующие инструкции.
minikube ip
minikube service –url mongo-nodeport-svc
Команда подключения:
mongo –host <ip> –port <port of nodeport svc> -u adminuser -p password123