【发布时间】:2021-12-14 06:52:56
【问题描述】:
我正在本地 Kubernetes 环境中运行带有 SQL Server 的 Ubuntu 容器,并在 Windows 笔记本电脑上使用 Docker Desktop。
现在我正在尝试将包含数据库文件的本地文件夹 (C:\data\sql) 挂载到 pod 中。
为此,我在 Kubernetes 中配置了持久卷和持久卷声明,但它似乎没有正确挂载。我没有看到错误或任何东西,但是当我使用 docker exec -it 进入容器并检查数据文件夹时,它是空的。我希望本地文件夹中的文件出现在已安装的文件夹“数据”中,但事实并非如此。
是否在 PV、PVC 或 pod 中配置错误?
这是我的 yaml 文件:
apiVersion: v1
kind: PersistentVolume
metadata:
name: dev-customer-db-pv
labels:
type: local
app: customer-db
chart: customer-db-0.1.0
release: dev
heritage: Helm
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /C/data/sql
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dev-customer-db-pvc
labels:
app: customer-db
chart: customer-db-0.1.0
release: dev
heritage: Helm
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
apiVersion: apps/v1
kind: Deployment
metadata:
name: dev-customer-db
labels:
ufo: dev-customer-db-config
app: customer-db
chart: customer-db-0.1.0
release: dev
heritage: Helm
spec:
selector:
matchLabels:
app: customer-db
release: dev
replicas: 1
template:
metadata:
labels:
app: customer-db
release: dev
spec:
volumes:
- name: dev-customer-db-pv
persistentVolumeClaim:
claimName: dev-customer-db-pvc
containers:
- name: customer-db
image: "mcr.microsoft.com/mssql/server:2019-latest"
imagePullPolicy: IfNotPresent
volumeMounts:
- name: dev-customer-db-pv
mountPath: /data
envFrom:
- configMapRef:
name: dev-customer-db-config
- secretRef:
name: dev-customer-db-secrets
起初,我试图在没有 PV 和 PVC 的 pod 中定义一个卷,但是当我尝试从挂载的数据文件夹中读取文件时出现访问被拒绝错误。
spec:
volumes:
- name: dev-customer-db-data
hostPath:
path: C/data/sql
containers:
...
volumeMounts:
- name: dev-customer-db-data
mountPath: data
我也尝试过使用 --set volumePermissions.enabled=true 进行 Helm 安装,但这并没有解决拒绝访问错误。
【问题讨论】:
-
你能创建持久卷吗?
kubectl get pv dev-customer-db-pv和kubectl get pvc dev-customer-db-pvc显示什么? -
kubectl describe pv:名称:dev-customer-db-pv 标签: 注释: 终结者:[kubernetes.io/pv-protection] StorageClass:状态:可用声明:回收策略:保留访问模式:RWO VolumeMode:文件系统容量:1Gi 节点关联性:
消息:来源:类型:HostPath(裸主机目录卷) 路径:/C/data/sql HostPathType:事件: -
kubectl describe pvc: ... 容量:100Mi 访问模式:RWO VolumeMode:文件系统事件:来自消息的类型原因年龄 ... 正常供应 13m docker.io/hostpath_storage-provisioner_... 外部供应商is provisioning volume for claim "default/dev-customer-db-pvc" Normal ProvisioningSucceeded 13m docker.io/hostpath_storage-provisioner_7da78fbd-f930-4d1d-b9ad-66b6ddbac442 成功配置卷 pvc-d017adcc-462e-4d10-aead-cf75d83000db跨度>
-
@ngruson 您在 Docker 桌面上使用什么 - WSL 2 或 Hyper-V?
-
是的,它适用于 Andrew 的最后回复。使用主机路径
/run/desktop/mnt/host/c/data/sql,可以在SQL容器内使用数据库文件。
标签: kubernetes docker-desktop kubernetes-pvc