MySQL на GKE Autopilot с GCSFUSE: разрешение отказано в/var/lib/mysql/MySql

Форум по Mysql
Ответить
Anonymous
 MySQL на GKE Autopilot с GCSFUSE: разрешение отказано в/var/lib/mysql/

Сообщение Anonymous »

title:
mysql на GKE Autopilot с GCSFUSE: разрешение отказано on/var/lib/mysql/
p> body:
Я развертываю MySQL 8.0 на Google Kubernetes Engine (GKE) Autopilot с использованием Google Cloud Storage ( GCS) с GCSFUSE в качестве постоянного. Файлы базы данных хранятся в ведре GCS, а том установлен на /var/lib/mysql.
Тем не менее, MySQL не может запустить из -за разрешения Проблемы , со следующей ошибкой:

Код: Выделить всё

Defaulted container "mysql" out of: mysql, gke-gcsfuse-sidecar (init), fix-permissions (init)
2025-02-04 16:58:35+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.41-1.el9 started.
2025-02-04 16:58:38+00:00 [Note] [Entrypoint]: Initializing database files
mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)
2025-02-04T16:58:38.828764Z 0 [ERROR] [MY-010460] [Server] --initialize specified but the data directory exists and is not writable. Aborting.
2025-02-04T16:58:38.828780Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable.
2025-02-04T16:58:38.829179Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.41)  MySQL Community Server - GPL
< /code>

 [b] Обзор настроек < /strong> < /h3>
У меня есть следующая настройка: < /p>  [list]
[*]   persistentvolume (pv) и persistentvolumeclair (pvc) < /strong> с использованием gcsfuse-csi < /code>: < /p>
< ul>
  bucket: [/b] www_1 
[*] path: /var/lib/mysql
[*] Режим доступа: readwritemany (rwx)

< /li>
[*] развертывание (mysql) включает в себя: < /strong> < /p>
  • initcontainer < /code> (

    Код: Выделить всё

    fix-permissions
    ), который устанавливает правильное право собственности (

    Код: Выделить всё

    chown -R 999:999 /var/lib/mysql
    )
  • Код: Выделить всё

    gke-gcsfuse-sidecar
    для монтажа ведра GCS
  • MySQL 8.0, работающий с монтированием громкости at/var/lib/mysql
< /li>
[*] Конфигурация учетной записи службы: < /strong> < /p>
  • Сервисная учетная запись GKE связана с пользовательской учетной записью сервиса [/b].

    Код: Выделить всё

    roles/storage.admin
    , role/storage.objectadmin ).
  • Требуемые каталоги (требуемые (необходимые каталоги (

    Код: Выделить всё

    databases/api
    ) существует в ведре GCS .
[/list]

что я попробовал < /strong> < /h3>
  • Проверено Статус ПВХ:

    Код: Выделить всё

    kubectl get pvc shared-storage-pvc
    < /code>
    
     Выход: [b]Bound
    [/b] ** с Rwx **, так что Kubernetes видит его в качестве записи.
[*] p> проверенный статус PersistentVolume (PV):

Код: Выделить всё

kubectl describe pv shared-storage-pv
< /code>
[list]
 Вывод показывает, что объем правильно назначен PVC. < /li>
< /ul>
< /li>    [b] Проверьте разрешения пользователя MySQL: < /strong> < /p>
kubectl exec -it deployment/api-mysql-deployment -- ls -lah /var/lib/mysql
< /code>

 не может выполнить, потому что POD не может запустить. < /li>
< /ul>
< /li>
   проверял, монтируется ли gcsfuse только чтенныйkubectl exec -it deployment/api-mysql-deployment -- mount | grep /var/lib/mysql
< /code>

 не может выполнить, потому что POD не может запустить. < /li>
< /ul>
< /li>
   Проверенные журналы неудачных POD: [/b]
kubectl logs deployment/api-mysql-deployment
< /code>

 Показывает [b] ошибки разрешения на ****/var/lib/mysql/
[/b].
[/list]

Попробовал добавить флаги MySQL для совместимости GCSFUSE:

Код: Выделить всё

args:
- "--skip-log-bin"
- "--skip-ssl"
- "--ssl=0"
- "--innodb-flush-method=fsync"
- "--innodb-use-native-aio=0"
< /code>
< /li>
  [b] попытаться вручную удалить  /var/lib/mysql/*
[/b] и перезапуск

Код: Выделить всё

kubectl delete pod api-mysql-deployment
kubectl rollout restart deployment api-mysql-deployment
< /code>

 Все еще не проходит с ошибок разрешения. < /li>
< /ul>
< /li>
< / ul>

 [b] развертывание конфигурации yaml < /strong> < /h3>
apiVersion: apps/v1
kind: Deployment
metadata:
name: api-mysql-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: mysql
template:
metadata:
labels:
app: mysql
annotations:
gke-gcsfuse/volumes: "true"
spec:
serviceAccountName: spock
initContainers:
- name: fix-permissions
image: busybox
command: ["sh", "-c", "chown -R 999:999 /var/lib/mysql && chmod -R 777 /var/lib/mysql"]
securityContext:
runAsUser: 0
volumeMounts:
- name: shared-storage
mountPath: "/var/lib/mysql"
subPath: "databases/api"
containers:
- name: mysql
image: mysql:8.0
args:
- "--skip-log-bin"
- "--skip-ssl"
- "--ssl=0"
- "--innodb-flush-method=fsync"
- "--innodb-use-native-aio=0"
env:
- name: MYSQL_ROOT_PASSWORD
value: "password"
- name: MYSQL_DATABASE
value: "api"
- name: MYSQL_USER
value: "user"
- name: MYSQL_PASSWORD
value: "password"
volumeMounts:
- name: shared-storage
mountPath: "/var/lib/mysql"
subPath: "databases/api"
volumes:
- name: shared-storage
persistentVolumeClaim:
claimName: shared-storage-pvc
< /code>

  Вопросы < /strong> < /h3>

  Почему это делает MySQL все еще видит  /var/lib/mysql
[/b] как только для чтения, несмотря на установку правильных атрибутов ПВХ и тома? Strong> , чтобы установить как

Код: Выделить всё

read-write
[/b] в GKE Autopilot? strong> < /li>
< /ol>
Я бы признателен за любые идеи от тех, кто успешно развернул MySQL с GCSFUSE на GKE Autopilot! < /p>

заранее спасибо! < /p>

Подробнее здесь: https://stackoverflow.com/questions/794 ... -lib-mysql
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»