之前為公司基于kubernetes做了個中間件服務云平臺,主要就是用鏡像在kubernetes里面生成中間件供使用,做了mongodb卻一直沒機會用,今天第一次使用就出了個大問題,mongodb的持久化檔案用hostPath掛載不到宿主機上導致容器重啟資料就丟失,希望大神能幫忙看一下,萬分感激!!!
首先這是中間件串列的截圖:

然后我使用kubectl describe pod一下,可以看到我把容器中mongodb的/data目錄掛載到了宿主機的/data/mongodb/midware/mongodb-yapi目錄下:

然后exec進入這個mongodb的容器,查看根據前端用戶選擇的配置生成的mongodb組態檔:
root@mongodb-yapi-f9db75b6-nlkkn:/etc/mongo# cat mongod.conf
systemLog:
verbosity: 0
quiet: true
traceAllExceptions: true
#path: /data/mongodb.log
#logAppend: true
#logRotate: rename
#destination: file
timeStampFormat: iso8601-local
processManagement:
fork: false
#pidFilePath: /data/mongo.pid
net:
port: 27017
bindIp: 0.0.0.0
maxIncomingConnections: 20000
wireObjectCheck: true
security:
authorization: disabled
javascriptEnabled: true
storage:
dbPath: /data/db
indexBuildRetry: true
journal:
enabled: true
commitIntervalMs: 100
directoryPerDB: false
syncPeriodSecs: 60
engine: wiredTiger
mmapv1:
preallocDataFiles: false
nsSize: 16
quota:
enforced: false
maxFilesPerDB: 8
smallFiles: false
wiredTiger:
engineConfig:
cacheSizeGB: 1
journalCompressor: snappy
directoryForIndexes: false
collectionConfig:
blockCompressor: snappy
indexConfig:
prefixCompression: true
operationProfiling:
slowOpThresholdMs: 100
這里mongodb的持久化檔案是存盤在容器中的/data/db目錄下,理論上來說在宿主機上的/data/mongodb/midware/mongodb-yapi/db目錄下也應該會有mongodb的持久化檔案:


這時候容器內有mongodb的持久化檔案,但是宿主機上的卻沒有....進入容器,查看下/data子目錄的權限是這樣的:

在容器中,我在/data的目錄下新建一個檔案夾test,并在檔案夾中touch一個檔案111.txt,退出容器后在宿主機的目錄下可以看到這個新建的檔案夾和檔案:


可以看到我確實把容器內的/data目錄掛載到了宿主機的/data/mongodb/midware/mongodb-yapi/目錄,后來怕是權限或者是檔案屬性的問題,我又做個個測驗,在容器中把mongodb的持久化檔案復制出來:

然后我再到宿主機的目錄下查看:

結果這些持久化檔案都出來了...所以很納悶這是個什么問題,由于嚴重影響mongodb的使用,所以問題比較著急,希望大神能夠指導一下,謝謝!!!
uj5u.com熱心網友回復:
同樣的問題,hostpath完全沒用,別人的案例也無法復現轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/9478.html
標籤:虛擬化
上一篇:批量入庫Kerbos認證的HBase,入庫越來越慢直到程式卡死不動,后臺一直告警,求解決!!!
下一篇:關于 docker 后期添加埠
