Ошибка в обновлении версии для MySQL шаблонов Openshift - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь развернуть MySQL Экземпляр на Openshift Cloud Platform. Мои требования:

  1. Версия 8.0.19 (последняя версия)
  2. 1 набор основных и 2 подчиненных реплик
  3. Постоянство

I нашел шаблоны для MySQL версии 5.7 по адресу: MySQL -Version5.7

После некоторых изменений я успешно интегрировал эти шаблоны в свой исходный код. Они идеально подходят в соответствии с моим требованием, кроме проблемы MySQL версии. Я пробовал несколько способов развернуть последнюю версию MySQL с использованием этих шаблонов, но в каждом случае возникали некоторые ошибки.

После изменения значения версии 5.7 на latest в этих шаблонах только главная реплика был развернут с ошибками:

Ошибка проверки готовности: ОШИБКА 2003 (HY000): Невозможно подключиться к MySQL серверу на 127.0.0.1 (111)

После исправления этой ошибки последовало еще несколько ошибок, но тот же шаблон работает без каких-либо изменений для версии 5.7. Я должен что-то упустить в шаблонах, которые я не знаю. Это обязательное требование для меня, и я новичок в этом.

Как развернуть MySQL последнюю версию, используя эти шаблоны?

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Этот не является шаблоном, скажем так. Может быть проблема в том, что вы переключаете версию на более высокую, поскольку она может быть оптимизирована для этого конкретного MySQL 5.7

Если вы действительно хотите использовать шаблон, который можно просто обновить до более высокой версии в одном go, вы должны рассмотреть совет @ Хар sh Манвар , используя MySQL - Диаграмма руля .

Сгенерированные вами ошибки этой частью StatefulSet:

readinessProbe:
          exec:
            # Check we can execute queries over TCP (skip-networking is off).
            command: ["mysql", "-h", "127.0.0.1", "-e", "SELECT 1"]
          initialDelaySeconds: 5
          periodSeconds: 2
          timeoutSeconds: 1

Это означает, что pod проверит, может ли он подключиться к БД, используя команду mysql -h 127.0.0.1 -e SELECT 1. Поле periodSeconds указывает, что kubelet должен выполнять проверку готовности каждые 2 секунды. Поле initialDelaySeconds сообщает кубелету, что ему следует подождать 5 секунд перед выполнением первого исследования.

Вы можете изменить эти значения на более высокие, чтобы убедиться, что это работает.

Если вы предоставляете режим Подробнее о других ошибках, которые вы ожидаете, мы постараемся помочь в дальнейшем.

Также, если вы сначала развернули 5.7, а затем попытались просто изменить версию, это может не сработать, поскольку некоторые ресурсы уже были созданы, например volumes и latest не будут работать с ресурсами предыдущей версии. Вам следует подумать о том, чтобы запустить это чистое пространство имен или удалить ранее созданные объекты.

Вы можете выполнить Очистка :

  1. Отмена SELECT @@server_id l oop, нажав Ctrl + C на своем терминале или запустив следующее с другого терминала:

kubectl delete pod mysql-client-loop --now
Удалить StatefulSet. Это также начинает завершать стручки.

kubectl delete statefulset mysql
Убедитесь, что стручки исчезли. Они могут занять некоторое время, чтобы завершить sh завершение.

kubectl get pods -l app=mysql

Вы будете знать, что Бобы закончились, когда вышеприведенное вернет:

  No resources found.
  1. Удалите ConfigMap, Services и PersistentVolumeClaims.

kubectl delete configmap,service,pvc -l app=mysql
Если вы вручную настроили PersistentVolumes, вам также необходимо вручную удалить их, а также освободить базовые ресурсы. Если вы использовали динамический c поставщик, он автоматически удаляет PersistentVolumes, когда видит, что вы удалили PersistentVolumeClaims. Некоторые динамические c провайдеры (например, для EBS и PD) также освобождают базовые ресурсы после удаления PersistentVolumes.
0 голосов
/ 27 марта 2020

Вместо использования этого шаблона, я бы порекомендовал использовать рулевой график. Если вы новичок в Kubernetes и по ошибке что-то неправильно настроили, это может привести к катастрофе.

Вы можете использовать таблицу управления, которая похожа на предварительно настроенные шаблоны.

Вы можете проверить это: MySQL -Helm

Я не уверен, что, возможно, у вас возникли проблемы из-за изменений в реализации MYSQL версии для готовности и живости.

Для MySQL В конфигурации HA вы можете проверить это: https://github.com/helm/charts/tree/master/incubator/mysqlha

Шаблон для MySQL последняя версия 8:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
  labels:
    app: mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
        - image: mysql:8
          name: mysql
          args:
            - "--default-authentication-plugin=mysql_native_password"
          env:
            - name: MYSQL_ROOT_PASSWORD
              value : password
          ports:
            - containerPort: 3306
              name: mysql
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          persistentVolumeClaim:
            claimName: mysql-volumeclaim
...