Kubernetes Docker / MySQL несколько баз данных в одном сервисе

0

Мне нужно несколько баз данных в одной службе mysql.

apiVersion: v1
kind: Service
metadata:
  name: database
  labels:
    app: keyshake
spec:
  ports:
    - port: 3306
  selector:
    app: keyshake
    tier: database
  type: LoadBalancer
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: database-pv-claim
  labels:
    app: keyshake
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: database
  labels:
    app: keyshake
spec:
  selector:
    matchLabels:
      app: keyshake
      tier: database
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: keyshake
        tier: database
    spec:
      containers:
      - image: mysql:5.6
        name: mysql
        env:
        - name: MYSQL_RANDOM_ROOT_PASSWORD
          value: "yes"
        - name: MYSQL_USER
          value: keyshake
        - name: MYSQL_PASSWORD
          valueFrom:
            secretKeyRef:
              name: database-password
              key: password
        ports:
        - containerPort: 3306
          name: database
        volumeMounts:
        - name: database-persistent-storage
          mountPath: /var/lib/mysql
        - name: mysql-initdb
          mountPath: /docker-entrypoint-initdb.d
      volumes:
      - name: database-persistent-storage
        persistentVolumeClaim:
          claimName: database-pv-claim
      - name: mysql-initdb
        configMap:
          name: mysql-initdb-config

Это моя конфигурация. Сейчас я использую конфигурационную карту с этим контентом:

init.sql:

CREATE DATABASE IF NOT EXISTS keyshake;
CREATE DATABASE IF NOT EXISTS pdns;

Когда я создаю службу, он регистрирует этот /usr/local/bin/docker-entrypoint.sh: running/docker-entrypoint-initdb.d/init.sql но когда я подключаюсь к нему и перечисляю базы данных, я ничего не вижу.

Я предполагаю, что моя конфигурация настроена неправильно, но я не знаю, в чем проблема.

Заранее спасибо.

Тео

  • 0
    Можете ли вы поделиться настройкой Configmap: kubectl опишите configmap mysql-initdb-config и перехватите любые другие события из MySQL Pod и опубликуйте их?
Теги:
docker
kubernetes

1 ответ

0

Добавьте ту же конфигурацию в файл файл для докеры, как:

services:
 mysql1:
    container_name: mysqlserver
    image: mysql:5.6
    ports:
        - 3310:3306
    volumes:
        - ./sqlserver:/docker-entrypoint-initdb.d
    environment:
        MYSQL_ROOT_PASSWORD: "root"
        MYSQL_DATABASE: <dbname1>
        MYSQL_USER: <db1user>
        MYSQL_PASSWORD: <db1pass>

mysql2:
    container_name: mysqlserver2
    image: mysql:5.6
    environment:
    volumes:
        - ./sqlserver:/docker-entrypoint-initdb2.d
    ports:
        - 3311:3306
        MYSQL_ROOT_PASSWORD: "root"
        MYSQL_DATABASE: <dbname2>
        MYSQL_USER: <db2user>
        MYSQL_PASSWORD: <db2pass>

Если вам это нужно в одной службе, если вы имеете в виду, то вам нужно загрузить этот объем докеров в ваше приложение. Если вы хотите, чтобы приложение было настроено с двумя базами данных, добавьте In Loadbalancer, такие свойства, как Config.services.mysqlserver1 (хост, порт, пропуск).

Если вы используете AD Accumulator (например, JPA), тогда вам нужно добавить schema.sql seprately с чем-то вроде

CREATE DATABASE IF NOT EXISTS keyshake;
CREATE DATABASE IF NOT EXISTS pdns;

И добавьте путь к schema.sql в точке входа docker для обоих экземпляров изображения вместо docker-entrypoint-initdb. sql→ schema.sql

Настройте разные порты в портах и посмотрите "docker -ti mysql1/bin/bash" и "docker -ti server2/bin/bash", имеют ли оба экземпляра базы данных нужные таблицы.

Надеюсь это поможет!!!.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню