无法使用外部卷在kubernetes中运行mysql pod

时间:2016-10-01 03:27:22

标签: mysql kubernetes google-kubernetes-engine kubernetes-pod

我有谷歌云容器引擎设置。我想用外部音量旋转mysql的pod。

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

当我运行RC without外部卷时,MySQL工作正常。当我尝试附加音量时,它打破了以下错误

Kubernetes POD错误:

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 diskimage - ubuntu创建磁盘。两者都失败了同样的错误。

2 个答案:

答案 0 :(得分:0)

从我的角度来看,安装永久磁盘的错误消息实际上并不具有描述性。根据配置文件使用空白磁盘。

要检查的一些事项:

  • pdName与CGE环境中的完全相同
  • 磁盘是否与您的群集在同一可用区(例如europe-west1-c),否则无法安装。

希望这有帮助。

答案 1 :(得分:0)

您遇到的问题可能是由于使用RC而不是Pod与永久磁盘进行交互。

正如documentation中提到的那样:

  

PD的一个特点是它们可以同时由多个消费者以只读方式安装。这意味着您可以使用数据集预先填充PD,然后根据需要从多个pod中并行提供。不幸的是,PD只能由一个消费者以读写模式安装 - 不允许同时写入。   在由ReplicationController控制的pod上使用PD将失败,除非PD是只读的或副本计数为0或1。

在这种情况下,我建议你使用Persistent Disks运行MySQL,在Pod配置文件中定义磁盘连接。您可以找到here的示例配置。