我试图在我的minikube集群中挂载一个本地文件夹作为mongo的< code>/data/db。目前还没有运气:(
所以,我按照这些步骤进行了操作。它们描述了如何创建持久卷、持久卷声明、服务和pod。
配置文件是有意义的,但是当我最终启动pod时,它会由于错误而重新启动,然后它会继续运行。来自pod的日志(kubectl logmongo-0
)是
2019-07-02T13:51:49.177+0000 I CONTROL [main] note: noprealloc may hurt performance in many applications
2019-07-02T13:51:49.180+0000 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=mongo-0
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] db version v4.0.10
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] allocator: tcmalloc
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] modules: none
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] build environment:
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] distmod: ubuntu1604
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] distarch: x86_64
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] target_arch: x86_64
2019-07-02T13:51:49.184+0000 I CONTROL [initandlisten] options: { net: { bindIp: "0.0.0.0" }, storage: { mmapv1: { preallocDataFiles: false, smallFiles: true } } }
2019-07-02T13:51:49.186+0000 I STORAGE [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2019-07-02T13:51:49.186+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=483M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
2019-07-02T13:51:51.913+0000 I STORAGE [initandlisten] WiredTiger message [1562075511:913047][1:0x7ffa7b8fca80], txn-recover: Main recovery loop: starting at 3/1920 to 4/256
2019-07-02T13:51:51.914+0000 I STORAGE [initandlisten] WiredTiger message [1562075511:914009][1:0x7ffa7b8fca80], txn-recover: Recovering log 3 through 4
2019-07-02T13:51:51.948+0000 I STORAGE [initandlisten] WiredTiger message [1562075511:948068][1:0x7ffa7b8fca80], txn-recover: Recovering log 4 through 4
2019-07-02T13:51:51.976+0000 I STORAGE [initandlisten] WiredTiger message [1562075511:976820][1:0x7ffa7b8fca80], txn-recover: Set global recovery timestamp: 0
2019-07-02T13:51:51.979+0000 I RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)
2019-07-02T13:51:51.986+0000 W STORAGE [initandlisten] Detected configuration for non-active storage engine mmapv1 when current storage engine is wiredTiger
2019-07-02T13:51:51.986+0000 I CONTROL [initandlisten]
2019-07-02T13:51:51.986+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2019-07-02T13:51:51.986+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2019-07-02T13:51:51.986+0000 I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2019-07-02T13:51:51.986+0000 I CONTROL [initandlisten]
2019-07-02T13:51:52.003+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
2019-07-02T13:51:52.005+0000 I NETWORK [initandlisten] waiting for connections on port 27017
如果我连接到MongoDB/pod,mongo运行正常!但是,它没有使用永久卷。下面是我的pv.yaml:
kind: PersistentVolume
apiVersion: v1
metadata:
name: mongo-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/k8s/mongo"
在mongopod中可以看到/data/db
中的mongo文件,但在我的本地机器上(/k8s/mongo
)文件夹是空的。
下面我还将列出持久卷声明 (pvc) 和 pod/service yaml
pvc.yaml:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mongo-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
mongo.yaml:
apiVersion: v1
kind: Service
metadata:
name: mongo
labels:
name: mongo
spec:
clusterIP: None
ports:
- port: 27017
targetPort: 27017
selector:
role: mongo
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: mongo
spec:
serviceName: "mongo"
replicas: 1
template:
metadata:
labels:
role: mongo
environment: test
spec:
terminationGracePeriodSeconds: 10
volumes:
- name: mongo-pv-storage
persistentVolumeClaim:
claimName: mongo-pv-claim
containers:
- name: mongo
image: mongo
command:
- mongod
- "--bind_ip"
- 0.0.0.0
- "--smallfiles"
- "--noprealloc"
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-pv-storage
mountPath: /data/db
我也尝试过,而不是使用persistentVolumeClaim
volumes:
- name: mongo-pv-storage
hostPath:
path: /k8s/mongo
给出相同的问题,只是在创建过程中没有错误。
有没有什么建议,问题可能是什么,或者下一步在哪里寻找更多细节?
此外,PV和PVC是如何连接的?
我可以确认它确实在桌面环境的k8s<code>docker中工作。所以这个问题与迷你库贝有关。我已经用hyperkit
和vritualbox
驱动程序测试了minikube。在这两种情况下,写入/data/db的文件在本地文件夹(/k8s/mongo)中都不可见
一些建议(可能/可能没有帮助)
将存储类名称更改为字符串:
storageClassname: "manual"
这个很奇怪,但对我很有效,确保你的path /k8s/mongo有正确的权限。< code>chmod 777 /k8s/mongo
请尝试一下
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: mongo
app: mongodb
spec:
replicas: 1
template:
metadata:
labels:
app: mongodb
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongo
image: mongo:3
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-persistent-volume
mountPath: /data/db
volumeClaimTemplates:
- metadata:
name: mongo-persistent-volume
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 5Gi
您可以创建全新的PVC并在此处使用它或更改名称。这对我有用,我在传递命令时也遇到了同样的问题来配置 mongoDB。删除命令并尝试。
有关详细信息,请查看此github
Serenity 2.1.5 引入保存如下信息的网格列表设置: 可见列和显示顺序 列宽 排序的列 高级过滤器(由右下角的编辑过滤器链接创建) 快速过滤器(撰写本文档时,尚未提供该功能) 包含已删除的状态切换 默认情况下,网格列表不会自动持久化任何东西。 因此,如果你隐藏某些列并离开订单页面,当你再次返回该页面时,你就会看到那些隐藏的列再次成为可见列。 你需要开启所有网格列表的持久化设置,或设置单独
我想在1个应用程序中设置2个Firebase,但有不同的持久性。 一个是启用,第二个是禁用。 请通知我如何设置。 一个应用程序中的多个Firebase项目 但这并没有解释, 如何为第二个Firebase设置持久性。 我要启用第一火线的持久性。 正如我们所看到,getInstance是静态方法, 我们怎么知道, 将属于第一或第二消防基地。
我有一个Spring应用程序,它使用写入MongoDB。问题是我想从持久性中跳过空列表实体属性,以节省文档周围的空间。我该怎么做?
我想使用apache ignite作为数据库的缓存,为此我使用persitent store。我的数据库是Cassandra,我使用这个wiki进行配置。 通过此初始化,我在Windows中运行ignite: cassandra-ignite-config.xml 好像漏掉了什么,但我不明白。 更新: 我使用基本概念和示例中的示例4。但是知道我有pojo示例的序列化问题。
上次用JBoss 7.1 (Java EE6标准)开发app,用DAOs写了持久层。 首先,我有一个“抽象”的道,它是所有具体道的父亲: 然后,我的域中的每个DB实体都有一个dao实现。 它们都非常相似,它们只是为比通常的“crud”操作更复杂的查询添加方法。 下面是一个示例: 如您所见,我的Dao是无状态EJB。 这种方式使我的应用程序工作,但...当我必须创建一个新的实体时,我必须创建实体本身
问题内容: 当我通过获取我的ElasticSearch服务器设置时 我看到了持久性和临时性设置。 如果我设置一个持久设置,它不会将其保存到我的配置文件中吗?所以我的问题是服务器重新启动时,如何知道我的持久设置是什么? 不要告诉我不要担心,因为我几乎失去了整个群集的数据,因为它在重新启动后获取了配置文件中的所有设置,而不是上面显示的持久性设置:) 问题答案: 持久性设置存储在全局集群状态文件中的每个
RDB和AOF两者毫无关系,完全独立运行,如果使用了AOF,重启时只会从AOF文件载入数据,不会再管RDB文件。在配置上有三种选择:不持久化,RDB,RDB+AOF。官方不推荐只开启AOF(因为恢复太慢另外如果aof引擎有bug),除非明显的读多写少的应用。 开启AOF时应当关闭AOF自动rewrite,并在crontab中启动在业务低峰时段进行的bgrewrite。 如果在一台机器上部署多个re
问题内容: 我正在尝试使用Go OS 在机器上设置一些环境变量 似乎该变量可用于Go程序,但是一旦我完全终止了Go进程,该变量就不再可用。我想知道是否可以永久设置这些变量。原因是我希望为本地和开发环境创建一个带有配置文件(数据库名称等)的“安装程序”文件,以便我可以在根本不进行任何设置的情况下进行切换…只需运行一次setup.go 。 问题答案: 简短:不可能。您不能更改父进程的环境。您只能更改自