使用K8S集群运行MongoDB7.0
参考:
https://hub.docker.com/_/mongo
- 创建PVC
创建PVC用于数据持久化
# cat mongodb-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongodb-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 22Gi
storageClassName: gluster-heketi-storageclass
创建pvc
# kubectl apply -f mongodb-pvc.yaml
查看创建的PVC
# kubectl get pvc mongodb-pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mongodb-pvc Bound pvc-429a856d-ebdf-11ee-b17f-525400e71cb5 22Gi RWO gluster-heketi-storageclass 31m
- 创建Deployment
# cat mongodb-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mongodb
name: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mongodb
spec:
containers:
- image: mongo:7.0
name: mongo
ports:
- containerPort: 27017
protocol: TCP
env:
- name: MONGO_INITDB_ROOT_USERNAME
value: "root"
- name: MONGO_INITDB_ROOT_PASSWORD
value: "password"
volumeMounts:
- mountPath: /data/db
name: mongodb-pvc
volumes:
- name: mongodb-pvc
persistentVolumeClaim:
claimName: mongodb-pvc
注意添加以下环境变量用于鉴权,该变量名参考hub.docker.com得到
env:
- name: MONGO_INITDB_ROOT_USERNAME
value: "root"
- name: MONGO_INITDB_ROOT_PASSWORD
value: "qwer1234"
创建Deployment
# kubectl apply -f mongodb-deployment.yaml
- 创建Service
把NodePort端口固定
# cat mongodb-servive.yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: mongodb
name: mongodb
spec:
ports:
- port: 27017
protocol: TCP
targetPort: 27017
nodePort: 47017
selector:
app: mongodb
type: NodePort
status:
loadBalancer: {}
- 使用NodeIP+端口访问
下载MongoDB客户端
下载地址
https://downloads.mongodb.com/compass/mongodb-compass-1.42.3-win32-x64.exe
使用用户名和密码连接