kubernetes - Kubernetes:mysqld 无法创建/写入文件“/var/lib/mysql/is_writable”(错误代码:13 - 权限被拒绝)
问题描述
我有一个相同的问题,我看到其他用户对 percona 图像中的 mysql 文件夹的权限。但是我在 Kubernetes 中拥有它,我不确定在应用映像之前如何对卷进行 chown。
这是yaml:
apiVersion: v1
kind: Service
metadata:
name: db
labels:
app: db
k8s-app: magento
spec:
selector:
app: db
ports:
- name: db
port: 3306
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: db
spec:
selector:
matchLabels:
app: db
serviceName: db
template:
metadata:
labels:
app: db
k8s-app: magento
spec:
containers:
- args:
- --max_allowed_packet=134217728
- "--ignore-db-dir=lost+found"
volumeMounts:
- mountPath: /var/lib/mysql
name: data
env:
- name: MYSQL_DATABASE
valueFrom:
configMapKeyRef:
name: config
key: DB_NAME
- name: MYSQL_PASSWORD
valueFrom:
configMapKeyRef:
name: config
key: DB_PASS
- name: MYSQL_USER
valueFrom:
configMapKeyRef:
name: config
key: DB_USER
- name: MYSQL_ROOT_PASSWORD
valueFrom:
configMapKeyRef:
name: config
key: DB_ROOT_PASS
image: percona:5.7
name: db
resources:
requests:
cpu: 100m
memory: 256Mi
restartPolicy: Always
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
同样的问题,但在 docker 中: Docker-compose : mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
如何在 Kubernetes 中修复它?
解决方案
我找到了这个解决方案并且它有效:
initContainers:
- name: take-data-dir-ownership
image: alpine:3
# Give `mysql` user permissions a mounted volume
# https://stackoverflow.com/a/51195446/4360433
command:
- chown
- -R
- 999:999
- /var/lib/mysql
volumeMounts:
- name: data
mountPath: /var/lib/mysql
推荐阅读
- user-interface - iced:如何全屏创建窗口?
- powershell - 为 AD 用户创建新的 Profilepath
- uncrustify - 删除“} break;”中的空格 和“案例 x:{”
- reactjs - Jest Mock 3rd 方 TS 模块 - 模拟时出现“找不到模块”错误
- javascript - 如何根据 Framework7 中的变量将用户路由到不同的页面?
- javascript - 如何为 Adobe PDF Embed API 自动生成 ClientID
- json - 使用 bash 循环遍历 JSON 数据以检查值
- java - 如何测试来自客户端的传入请求并发送回响应?
- email - Keycloak - 访问电子邮件模板中的上下文变量
- javascript - 在maplibre GL中的地图鼠标悬停上添加图像