Docker 桌面 Kubernetes Windows PV 非根容器
Docker Desktop Kubernetes Windows PV Non Root Container
我正在尝试让 Wordpress 运行 成为跨副本 wp-config.php
的共享卷。我正在 Docker 桌面上为 Windows 在 Ubuntu WSL v2 之上开发我的清单。我已经启用了 Docker Desktop 的 Kubernetes 功能,除了 PersistentVolume
resx 之外,它似乎工作正常。以下是我的清单中的相关片段:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0
namespace: yuknis-com
spec:
capacity:
storage: 60Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
storageClassName: local-storage
local:
path: /c/Users/Kirkland/pv0
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- "docker-desktop"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app: pvc0
name: wordpress-pvc
namespace: yuknis-com
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 60Gi
storageClassName: local-storage
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
namespace: yuknis-com
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
volumes:
- name: wordpress
persistentVolumeClaim:
claimName: wordpress-pvc
initContainers:
- name: volume-permissions
image: busybox
command: ['sh', '-c', 'chmod -R g+rwX /bitnami']
volumeMounts:
- mountPath: /bitnami
name: wordpress
containers:
- name: wordpress
image: yuknis/wordpress-nginx-phpredis:latest
envFrom:
- configMapRef:
name: wordpress
volumeMounts:
- name: wordpress
mountPath: /bitnami
ports:
- containerPort: 8080
protocol: TCP
- containerPort: 8443
protocol: TCP
当我尝试在 MacOS 上 运行 我的应用程序时,它在上面运行良好。但是,当我尝试在 Windows 上 运行 它时,它在 initContainer
部分失败,错误为:
chmod: /bitnami: Operation not permitted
chmod: /bitnami: Operation not permitted
为什么这可以在 MacOS 上运行,但不能在 WSL 之上的 Windows 上运行?有什么想法吗?
有一个known issue。 Docker Desktop 有自己的 WSL 发行版,因此您无法从同一根目录访问它。
此问题的解决方法是更改 PV 中的路径:
spec:
capacity:
storage: 60Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
storageClassName: hostpath
local:
path: /run/desktop/mnt/host/c/Users/Kirkland/pv0
检查github post我链接的使用此方法的注意事项。
我正在尝试让 Wordpress 运行 成为跨副本 wp-config.php
的共享卷。我正在 Docker 桌面上为 Windows 在 Ubuntu WSL v2 之上开发我的清单。我已经启用了 Docker Desktop 的 Kubernetes 功能,除了 PersistentVolume
resx 之外,它似乎工作正常。以下是我的清单中的相关片段:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv0
namespace: yuknis-com
spec:
capacity:
storage: 60Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
storageClassName: local-storage
local:
path: /c/Users/Kirkland/pv0
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- "docker-desktop"
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
app: pvc0
name: wordpress-pvc
namespace: yuknis-com
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 60Gi
storageClassName: local-storage
apiVersion: apps/v1
kind: Deployment
metadata:
name: wordpress
namespace: yuknis-com
labels:
app: wordpress
spec:
replicas: 1
selector:
matchLabels:
app: wordpress
template:
metadata:
labels:
app: wordpress
spec:
volumes:
- name: wordpress
persistentVolumeClaim:
claimName: wordpress-pvc
initContainers:
- name: volume-permissions
image: busybox
command: ['sh', '-c', 'chmod -R g+rwX /bitnami']
volumeMounts:
- mountPath: /bitnami
name: wordpress
containers:
- name: wordpress
image: yuknis/wordpress-nginx-phpredis:latest
envFrom:
- configMapRef:
name: wordpress
volumeMounts:
- name: wordpress
mountPath: /bitnami
ports:
- containerPort: 8080
protocol: TCP
- containerPort: 8443
protocol: TCP
当我尝试在 MacOS 上 运行 我的应用程序时,它在上面运行良好。但是,当我尝试在 Windows 上 运行 它时,它在 initContainer
部分失败,错误为:
chmod: /bitnami: Operation not permitted
chmod: /bitnami: Operation not permitted
为什么这可以在 MacOS 上运行,但不能在 WSL 之上的 Windows 上运行?有什么想法吗?
有一个known issue。 Docker Desktop 有自己的 WSL 发行版,因此您无法从同一根目录访问它。
此问题的解决方法是更改 PV 中的路径:
spec:
capacity:
storage: 60Gi
volumeMode: Filesystem
accessModes:
- ReadWriteMany
storageClassName: hostpath
local:
path: /run/desktop/mnt/host/c/Users/Kirkland/pv0
检查github post我链接的使用此方法的注意事项。