You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mongdb/基于Kubernetes集群构建MongoDB.md

212 lines
5.1 KiB

12 months ago
<h1><center>基于Kubernetes集群构建MongoDB</center></h1>
作者:行癫(盗版必究)
------
## 一:基础环境
1.Kubernetes集群正常运行
![image-20231122095145370](https://diandiange.oss-cn-beijing.aliyuncs.com/image-20231122095145370.png)
2.Harbor私有仓库正常运行
![image-20231122095408602](https://diandiange.oss-cn-beijing.aliyuncs.com/image-20231122095408602.png)
## 二MongoDB项目部署
MongoDB项目对应Kubernetes的yaml文件
```yaml
---
apiVersion: v1
kind: Namespace
metadata:
name: mongodb
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb
name: mongodb
namespace: mongodb
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb
spec:
containers:
- env:
- name: MONGO_INITDB_ROOT_USERNAME
value: root
- name: MONGO_INITDB_ROOT_PASSWORD
value: xingdian
image: mongo
#image: 10.9.12.201/xingdian/mongo
imagePullPolicy: IfNotPresent
name: mongodb
ports:
- containerPort: 27017
name: sss
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /data/db
name: volume-4ztti
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
volumes:
- name: volume-4ztti
nfs:
path: /data/mongodb
server: 10.9.12.250
---
apiVersion: v1
kind: Service
metadata:
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb
name: mongodb
namespace: mongodb
spec:
clusterIP: 10.108.206.134
clusterIPs:
- 10.108.206.134
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: 3cmrmd
nodePort: 30150
port: 27017
protocol: TCP
targetPort: 27017
selector:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb
sessionAffinity: None
type: NodePort
```
MongoDB-Express项目对应Kubernetes的yaml文件
```
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb-express
name: mongodb-express
namespace: mongodb
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb-express
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb-express
spec:
containers:
- env:
- name: ME_CONFIG_MONGODB_ADMINUSERNAME
value: root
- name: ME_CONFIG_MONGODB_ADMINPASSEORD
value: xingdian
- name: ME_CONFIG_MONGODB_URL
value: 'mongodb://root:xingdian@10.9.12.206:30150/'
#注意这里是连接mongodb的url其中root是用户xingdian是密码
image: 10.9.12.201/xingdian/mongo-express
#image: mongodb-express
imagePullPolicy: IfNotPresent
name: mongodb-express
ports:
- containerPort: 8081
name: qq
protocol: TCP
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
labels:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb-express
name: mongodb-express
namespace: mongodb
resourceVersion: '36330826'
spec:
clusterIP: 10.110.224.114
clusterIPs:
- 10.110.224.114
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: berrtc
nodePort: 30151
port: 8081
protocol: TCP
targetPort: 8081
selector:
k8s.kuboard.cn/layer: web
k8s.kuboard.cn/name: mongodb-express
sessionAffinity: None
type: NodePort
```
1.浏览器访问MongoDB管理界面
![image-20231122100003032](https://diandiange.oss-cn-beijing.aliyuncs.com/image-20231122100003032.png)
## 三MongoDB使用