- 创建命名空间
apiVersion: v1
kind: Namespace
metadata:
name: "mongodb"
labels:
name: "mongodb"
- 创建pv以及pvc
kind: PersistentVolume
apiVersion: v1
metadata:
name: mongo-pv-volume
spec:
storageClassName: manual
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/home/ellis/k8s/mongodb/mongodata"
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mongopvc
namespace: mongodb
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
- 创建secret
apiVersion: v1
kind: Secret
metadata:
name: mongosecret
namespace: mongodb
type: Opaque
stringData:
username: ellis
password: ellischen
- deployment
因为我用的Mongo镜像是6.0 所以探活指针的命令是mongosh ,如果镜像比较老,则是mongo
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mongo
name: mongo
namespace: mongodb
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:
- mongosh
- --eval
- "db.adminCommand('ping')"
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 6
readinessProbe:
exec:
command:
- mongosh
- --eval
- "db.adminCommand('ping')"
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
successThreshold: 1
failureThreshold: 6
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: mongosecret
key: username
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongosecret
key: password
volumeMounts:
- name: "mongo-data-dir"
mountPath: "/data/db"
volumes:
- name: "mongo-data-dir"
persistentVolumeClaim:
claimName: "mongopvc"
- service
apiVersion: v1
kind: Service
metadata:
labels:
app: mongo
name: mongo-nodeport-svc
namespace: mongodb
spec:
ports:
- port: 27017
protocol: TCP
targetPort: 27017
nodePort: 32000
selector:
app: mongo
type: NodePort
status:
loadBalancer: {}
- 部署client,运行mongo shell
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mongo-client
name: mongo-client
namespace: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongo-client
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mongo-client
spec:
containers:
- image: mongo
name: mongo-client
env:
- name: mongo-client_INITDB_ROOT_USERNAME
value: 'dummy'
- name: mongo-client_INITDB_ROOT_PASSWORD
value: 'dummy'
- 进入pod 运行shell
sudo kubectl exec pod/mongo-client-6c7bc768c4-4nxz7 -n mongodb -it -- /bin/bash
mongosh --host mongo-nodeport-svc --port 27017 -u ellis -p ellischen