在 NFS 服务器上创建目录
1 2
| sudo mkdir -p /data/nfs/mongodb-data sudo chmod 777 /data/nfs/mongodb-data
|
mongodb静态pv
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| # mongodb-static-pv.yaml apiVersion: v1 kind: PersistentVolume metadata: name: mongodb-data-pv labels: app: mongodb spec: capacity: storage: 10Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: nfs-storage # 相同的StorageClass名称 nfs: server: 192.168.1.100 path: /data/nfs/mongodb-data # 不同的路径 --- # mongodb-pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mongodb-data-pvc spec: storageClassName: nfs-storage # 引用相同的StorageClass accessModes: - ReadWriteOnce resources: requests: storage: 10Gi selector: # 可选:确保绑定到特定的PV matchLabels: app: mongodb
|
kubectl apply -f mongodb-static-pv.yaml
kubectl apply -f mongodb-pvc.yaml
mongodb部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| # mongodb-deployment.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: mongodb spec: serviceName: mongodb-service replicas: 1 selector: matchLabels: app: mongodb template: metadata: labels: app: mongodb spec: securityContext: fsGroup: 999 containers: - name: mongodb image: mongo:latest ports: - containerPort: 27017 env: - name: MONGO_INITDB_ROOT_USERNAME value: "admin" - name: MONGO_INITDB_ROOT_PASSWORD value: "password123" volumeMounts: - name: mongodb-data mountPath: /data/db securityContext: runAsUser: 999 runAsGroup: 999
volumes: - name: mongodb-data persistentVolumeClaim: claimName: mongodb-data-pvc ---
apiVersion: v1 kind: Service metadata: name: mongodb-service spec: selector: app: mongodb ports: - protocol: TCP port: 27017 targetPort: 27017 nodePort: 30017 # 节点暴露端口(范围30000-32767) type: NodePort # 允许外部通过节点IP:NodePort访问
|