记录一次K8S部署mongo

mongo.yaml文件

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-mongo
spec:
  capacity:
    storage: 2G
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/mongo
    server: 10.120.22.25


---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-mongo
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs

---
apiVersion: v1
data:
  mongo.conf: |
    systemLog:
      destination: file
      path: "/data/db/mongodb.log"
      logAppend: true
    processManagement:
      fork: false
    net:
      bindIp: 0.0.0.0
      port: 27017
    storage:
      engine: wiredTiger
      dbPath: /data/db
      wiredTiger:
        engineConfig:
          cacheSizeGB: 1
    replication:
      replSetName: "online"
kind: ConfigMap
metadata:
  name: mongo-conf

---
apiVersion: v1
kind: Service
metadata:
  name: mongo-service
  labels:
    name: mongo-service
spec:
  selector:
    app: mongo
  ports:
  - port: 27017
    targetPort: 27017
  type: NodePort

--- 
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: mongo
  name: mongo
spec:
  serviceName: "mongo"
  replicas: 1
  selector:
    matchLabels:
      app: mongo
  template:
    metadata:
      labels:
        app: mongo
    spec:
      containers:
      - args:
        - -f
        - /etc/mongo/mongo.conf
        command:
        - mongod
        name: mongo
        image: mongo
        ports:
          - containerPort: 27017
        volumeMounts:
        - name: mongo-data
          mountPath: /data/db
        - mountPath: /etc/mongo
          name: mongo-conf
      volumes:
        - name: mongo-data
          persistentVolumeClaim:
            claimName: pvc-mongo
        - name: mongo-conf
          configMap:
            name: mongo-conf
            items:
            - key: mongo.conf
              path: mongo.conf

redis.yaml

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-redis
spec:
  capacity:
    storage: 2G
  accessModes:
    - ReadWriteMany
  storageClassName: nfs
  nfs:
    path: /nfs/data/redis
    server: 10.120.22.25


---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc-redis
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  storageClassName: nfs

---
apiVersion: v1
data:
  redis.conf: |
    appendonly yes
kind: ConfigMap
metadata:
  name: redis-conf

---
apiVersion: v1
kind: Service
metadata:
  name: redis-service
  labels:
    name: redis-service
spec:
  selector:
    app: redis
  ports:
  - port: 6379
    targetPort: 6379
  type: NodePort

--- 
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: redis
  name: redis
spec:
  serviceName: "redis"
  replicas: 1
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis
        command:
          - redis-server
          - "/redis-master/redis.conf"  #指的是redis容器内部的位置
        ports:
        - containerPort: 6379
        volumeMounts:
        - mountPath: /data
          name: redis-data
        - mountPath: /redis-master
          name: redis-conf
      volumes:
        - name: redis-data
          persistentVolumeClaim:
            claimName: pvc-redis
        - name: redis-conf
          configMap:
            name: redis-conf
            items:
            - key: redis.conf
              path: redis.conf

直接使用一下命令即可:

kubectl apply -f xxx.yml

等待安装完成后进入容器执行一下命令
参考:https://www.jianshu.com/p/73b5ad930f47

mongo --host 127.0.0.1 --port 27017
rs.initiate()

否则会出现这些问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

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

更多推荐