2016-10-01 2 views
1

J'ai la configuration du moteur de conteneur google cloud. Je voulais tourner pod de mysql avec volume externe.Impossible d'exécuter mysql pod dans kubernetes avec le volume externe

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 

Quand je lance RC without volume externe, MySQL fonctionne très bien. Il rompt avec l'erreur ci-dessous lorsque je tente de joindre le volume

Kubernetes POD Erreur:

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)" 

disque (volume externe): mysql-1-disk est le disque nuage google. J'ai essayé de créer le disque avec les deux blank disk et image - ubuntu. Les deux ont échoué avec la même erreur.

+0

avez-vous résolu le problème? J'ai exactement les mêmes résultats tout en exécutant mysql sur GCE – VsMaX

Répondre

0

Les messages d'erreur sur le montage des disques persistants ne sont vraiment pas descriptifs de mon point de vue. Utilisez un disque vierge basé sur votre fichier de configuration.

Quelques choses à vérifier:

  • Est-ce le pdName exactement les mêmes que dans votre environnement EGC
  • est le disque dans la même zone de disponibilité (. Ex europe-west1-c) que votre cluster, sinon, il ne peut pas monter.

Espérons que cela aide.

0

Le problème que vous rencontrez peut être provoqué par l'utilisation de RC, pas de Pod pour interagir avec le disque persistant.

Comme il est mentionné dans documentation:

A feature of PD is that they can be mounted as read-only by multiple consumers simultaneously. This means that you can pre-populate a PD with your dataset and then serve it in parallel from as many pods as you need. Unfortunately, PDs can only be mounted by a single consumer in read-write mode - no simultaneous writers allowed. Using a PD on a pod controlled by a ReplicationController will fail unless the PD is read-only or the replica count is 0 or 1.

Dans ce cas, je vous suggère de faire fonctionner MySQL avec des disques persistants définissant la connexion du disque dans le fichier de configuration Pod. Exemple de configuration, vous pouvez trouver here.

+0

il utilise un RC avec un nombre de répliques de un, donc il va bien en utilisant un RC. Je préférerais toujours un RC au-dessus d'un POD puisque les RC sont relancés quand ils sont baissés, les pods ne le sont pas. –