mongodb - 更改所有权 /data/db、输入/输出错误、Kubernetes Mongo 部署
问题描述
我正在尝试使用 minikube 为 mongo 运行部署。我使用以下配置创建了一个持久存储:
kind: PersistentVolume
apiVersion: v1
metadata:
name: mongo-volume
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
claimRef:
namespace: default
name: mongo-claim
hostPath:
path: "/test"
该"/test"
文件夹正在使用minikube mount <local_path>:/test
然后我使用以下配置创建了一个 PV 声明:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mongo-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Mi
最后,我正在尝试使用以下配置创建服务和部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mongo
spec:
replicas: 1
template:
metadata:
labels:
tier: backend
app: mongo
spec:
containers:
- name: mongo
image: "mongo"
envFrom:
- configMapRef:
name: mongo-config
ports:
- name: mongo-port
containerPort: 27017
volumeMounts:
- name: mongo-storage
mountPath: "/data/db"
volumes:
- name: mongo-storage
persistentVolumeClaim:
claimName: mongo-claim
---
apiVersion: v1
kind: Service
metadata:
name: mongo
spec:
selector:
app: mongo
ports:
- protocol: TCP
port: 27017
targetPort: mongo-port
容器退出并出现错误更改“/data/db”的所有权,输入/输出错误。
问题1)谁在试图改变容器内部目录的所有权?是光伏索赔吗?问题2)为什么上面的罪魁祸首是想弄乱Mongodb容器默认存储路径的权限?
解决方案
看起来更多的是关于外部文件夹的virtualbox驱动程序然后是k8s本身,
在我的场景中
- 我在我的 OS X 上创建了一个文件夹,
- 将该文件夹映射到 minikube
minikube mount data-storage/:/data-storage
- 创建了指向 minikube 内文件夹的 PersistentVolume
- 创建 PersistentVolumeClaim 指向上面的 PV
- 尝试使用上面的 PVC 启动单个简单的 mongodb
并不断用日志重新启动 pod:
Fatal Assertion
fsync: Invalid Argument
折腾了几个小时,终于找到了这个
https://github.com/mvertes/docker-alpine-mongo/issues/1
如果文件夹映射到主机,这基本上是报告 virtualbox 驱动程序的问题。
一旦我将 PersistentVolume 映射到/data
minikube 内部 - 我的 pod 就像一个魅力一样活跃起来。
我的情况我已经决定,因为 minikube 是开发环境,所以没有理由坚持这个
更新:
我希望我能早点发现这一点,这样可以节省我一些时间!
docker CE 桌面已经内置了 kubernetes!
您只需要转到属性并将其打开,这根本不需要在虚拟盒子或 minikube 中。
最好的事情是共享文件夹(在文件共享选项卡上) - 可用于 kubernetes - 在 k8s 内使用 mongodb 检查。而且它比 minikube 快得多(顺便说一下,在我的 OS X 上它一直在失败)。
希望它会节省一些人的时间。
推荐阅读
- html - 弯曲方向属性
- flowtype - 从包含 index.css 文件的目录导入 index.js 时没有流类型检查
- netlogo - Netlogo - 给定 2+ 海龟的代理集,找到最常见的颜色
- google-apps-script - Google Slides API 是否允许向对象添加/修改动画?
- c# - 尝试在 .Net Core 控制台应用程序中使用 System.Drawing 时出错
- c - (char *)__strdup 在 c 中做了什么
- php - 无法使用 php 脚本将用户注册到我的 ejabberd 服务器的共享名册组
- java - java8时间包根据GMT时区执行代码块
- bootstrap-4 - 转到 angular-bootstrap ngCarousel 的最后添加的图像
- python - 在 Django 中,是否可以使用相同的 urlpattern 指定单独的“http”动词?