1.可在服务器上面创建

https://kubernetes.io/docs/home/   #k8s官网

 搜索Deployment  第一个就是例子

vi rs-mongodb.yaml

apiVersion: apps/v1 
kind: Deployment    #资源类型
metadata:
  namespace: klvchen
  name: mongodb
  labels:
    app: mongodb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      nodeName: k8s-node1    # 固定在 k8s-node1 节点
      containers:
      - name: mongodb
        image: mongo:4.2.9
        resources:
          limits:            # 限定资源
            cpu: 2000m
            memory: 8Gi
          requests:
            cpu: 100m
            memory: 8Gi
        env:
          - name: MONGO_INITDB_ROOT_USERNAME  # 设置用户名
            value: root
          - name: MONGO_INITDB_ROOT_PASSWORD  # 设置密码
            value: 'klvchen123'
        volumeMounts:
          - mountPath: /data/db         #容器的实际数据目录                
            name: mongodb-volume
      volumes:
        - name: mongodb-volume
          hostPath:
            path: /data/rs-mongodb-volume          # 映射的宿主机目录
            type: DirectoryOrCreate
 
---  #区分每个资源的开始

apiVersion: v1
kind: Service    #资源类型,创建service
metadata:
  namespace: klvchen
  name: mongodb
spec:
  type: ClusterIP
  selector:                   #唯一性与Deployment上的保持一致性
    app: mongodb
  ports:
  - port: 27017
    targetPort: 27017

启动及访问

# 启动
kubectl apply -f rs-mongodb.yaml

# 查看 
kubectl get pod -n klvchen -o wide

# 在 K8S 集群中的其他容器可以通过 FQDN 来访问
mongodb.klvchen.svc.cluster.local:27017

mongodb 简单操作

# 可以通过 kubectl -n klvhcen exec -it POD_NAME /bin/bash 进入容器

# 进入 mongodb 客户端
mongo admin

# 认证
db.auth('root','klvchen123')

# mongodb 创建 test 数据库,创建用户和密码
use test
db.createUser(
   {
     user: "test",
     pwd: "test123",
     roles: [ { role: "readWrite", db: "test" } ]
   }
 )
 

# 备份,会在当前目录下默认创建名为 dump 的备份文件夹
mongodump --host 127.0.0.1 --port 27017 -u test --authenticationDatabase test

# 恢复
mongorestore --host 127.0.0.1 --port 27017 -u test  --authenticationDatabase recommend dump

2.也可以直接在阿里云的ack上创建

 

apiVersion: apps/v1 
kind: Deployment
metadata:
  namespace: default
  name: mongodb
  labels:
    app: mongodb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongodb
  template:
    metadata:
      labels:
        app: mongodb
    spec:
      containers:
      - name: mongodb
        image: mongo:4.2.9
        resources:
          limits:            # 限定资源
            cpu: 500m
            memory: 2Gi
          requests:
            cpu: 100m
            memory: 2Gi
        env:
          - name: MONGO_INITDB_ROOT_USERNAME  # 设置用户名
            value: root
          - name: MONGO_INITDB_ROOT_PASSWORD  # 设置密码
            value: 'znst@123'
        volumeMounts:
          - mountPath: /data/db       #容器的实际数据目录             
            name: mongodb-volume
      volumes:
        - name: mongodb-volume
          hostPath:
            path: /data/rs-mongodb-volume          # 映射的宿主机目录
            type: DirectoryOrCreate
---


apiVersion: v1
kind: Service   #资源类型,创建service
metadata:
  namespace: default
  name: mongodb
spec:
  type: ClusterIP
  selector:                  #唯一性与Deployment上的保持一致性
    app: mongodb
  ports:
  - port: 27017
    targetPort: 27017

挂载pvc

apiVersion: apps/v1 
kind: StatefulSet
metadata:
  namespace: default
  name: gem-yxx-public-t-01
  labels:
    app: gem-yxx-public-t-01
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gem-yxx-public-t-01
  template:
    metadata:
      labels:
        app: gem-yxx-public-t-01
    spec:
      containers:
      - name: gem-yxx-public-t-01
        image: mongo:4.2.9
        resources:
          limits:            # 限定资源
            cpu: 500m
            memory: 2Gi
          requests:
            cpu: 100m
            memory: 2Gi
        env:
          - name: MONGO_INITDB_ROOT_USERNAME  # 设置用户名
            value: root
          - name: MONGO_INITDB_ROOT_PASSWORD  # 设置密码
            value: 'mOe8QUsttYNY'
        volumeMounts:
          - mountPath: /data/db       #容器的实际数据目录             
            name: gem-yxx-public-t-01
      volumes:
        - name: gem-yxx-public-t-01
          persistentVolumeClaim:
            claimName: gem-yxx-public-t-01
---
 
 
apiVersion: v1
kind: Service   #资源类型,创建service
metadata:
  namespace: default
  name: gem-yxx-public-t-01
spec:
  type: ClusterIP
  selector:                  #唯一性与Deployment上的保持一致性
    app: gem-yxx-public-t-01
  ports:
  - port: 27017
    targetPort: 27017

 

---  #区分每个资源的开始

3.mongodb常用命令

mongo --port 27017 -u "root" -p "znst@123"   #登录mongodb  

show dbs             #查看数据库

use test    #创建数据库

db.demo.insert({"name":"测试数据库"})            #需要插入数据才能显示数据库

db.dropDatabase()           #删除数据库,需要use test到需要删除的库

db             #显示当前使用的数据。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐