Как заставить Kubernete загрузить MySQL DB? - PullRequest
0 голосов
/ 03 февраля 2019

У меня есть следующее развертывание yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: iam-mysql
  labels:
    app: iam
    tier: mysql
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      app: iam
      tier: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: iam
        tier: mysql
    spec:
      containers:
      - image: mysql:5.6
        name: iam-mysql
        envFrom:
        - configMapRef:
            name: iam-mysql-conf-dev
        - secretRef:
            name: iam-mysql-pass-dev
        ports:
        - containerPort: 3306
          name: iam-mysql
        volumeMounts:
          - name: iam-mysql-persistent-storage
            mountPath: /var/lib/mysql
          - name: mysql-initdb
            mountPath: /docker-entrypoint-initdb.d
      restartPolicy: Always
      volumes:
        - name: iam-mysql-persistent-storage
          persistentVolumeClaim:
            claimName: iam-mysql-pv-claim
        - name: mysql-initdb
          configMap:
            name: iam-mysql-initdb-dev

Я не могу перезагрузить «iam-mysql-initdb-dev» с новой схемой после ее создания.Фактически, я удалил таблицу (пользователя) внутри модуля, и когда я снова создал развертывание, таблицы (пользователя) там не было.Это означает, что kubernetes не перезагружает схему после повторного создания развертывания.

1 Ответ

0 голосов
/ 04 февраля 2019

Это ожидаемое поведение.Файлы инициализации в каталоге /docker-entrypoint-initdb.d/ запускаются, только если каталог данных пуст.Это означает только 1-й раз.

Если вы посмотрите на сценарий точки входа MySQL 5.6, вы увидите этот процесс.В строке 98 проверяется, является ли каталог данных пустым.

  • Если он пуст, сценарий запустит файлы инициализации каталога /docker-entrypoint-initdb.d/.См. строка 190-192
  • Если он не пустой, весь сценарий точки входа будет игнорироваться. С строка 98 - 202

В kubernetes, когда вы используете постоянный том, эти тома сохраняются в отношении удаления и восстановления пакетов.Таким образом, когда модуль перезапускается, каталог данных не пуст.Итак, MySQL пропускает часть инициализации, начиная с , строка 98 - 202

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...