Невозможно запустить модуль mysql в kubernetes с внешним томом

#mysql #kubernetes #google-kubernetes-engine #kubernetes-pod

#mysql #kubernetes #google-kubernetes-engine #kubernetes-pod

Вопрос:

У меня есть настройка Google cloud container engine. Я хотел запустить модуль mysql с внешним томом.

ReplicationController:

 apiVersion: v1
kind: ReplicationController
metadata:
  labels:
    name: mysql
  name: mysql-controller
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: mysql
    spec:
      containers:
        - image: mysql
          name: mysql
          ports:
          - name: mysql
            containerPort: 3306
            hostPort: 3306
          volumeMounts:
            - name: mysql-persistent-storage
              mountPath: /var/lib/mysql
      volumes:
        - name: mysql-persistent-storage
          gcePersistentDisk:
            pdName: mysql-1-disk
            fsType: ext4
  

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

Ошибка модуля Kubernetes:

 Warning FailedSyncError syncing pod, skipping: failed to "StartContainer" for "mysql" with CrashLoopBackOff: "Back-off 20s restarting failed container=mysql pod=mysql-controller-4hhqs_default(eb34ff46-8784-11e6-8f12-42010af00162)"
  

Диск (внешний том):
mysql-1-disk это облачный диск Google. Я попытался создать диск с помощью обоих blank disk и image - ubuntu . Оба завершились с одинаковой ошибкой.

Комментарии:

1. вы решили проблему? У меня точно такие же результаты при запуске mysql на GCE

Ответ №1:

Сообщения об ошибках при монтировании постоянных дисков на самом деле не описательны, с моей точки зрения. Используйте пустой диск на основе вашего файла конфигурации.

Некоторые вещи, которые нужно проверить:

  • Является ли pdName точно таким же, как в вашей среде CGE
  • Находится ли диск в той же зоне доступности (например, europe-west1-c), что и ваш кластер, иначе он не сможет смонтироваться.

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

Ответ №2:

Проблема, с которой вы сталкиваетесь, может быть вызвана использованием RC, а не Pod для взаимодействия с постоянным диском.

Как указано в документации:

Особенностью PD является то, что они могут быть смонтированы как доступные только для чтения несколькими потребителями одновременно. Это означает, что вы можете предварительно заполнить PD своим набором данных, а затем обслуживать его параллельно из стольких модулей, сколько вам нужно. К сожалению, PDS может быть смонтирован только одним пользователем в режиме чтения-записи — одновременные записи не допускаются. Использование PD в модуле, управляемом ReplicationController, завершится ошибкой, если только PD не доступен только для чтения или количество реплик не равно 0 или 1.

В этом случае я могу предложить вам запустить MySQL с постоянными дисками, определяющими подключение к диску в файле конфигурации модуля. Пример конфигурации вы можете найти здесь .

Комментарии:

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