1

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

复制控制器:

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

当我运行 RCwithout外部卷时,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)"

Disk (External Volume): mysql-1-disk是谷歌云盘。我尝试使用blank disk和创建磁盘image - ubuntu。两者都因相同的错误而失败。

4

2 回答 2

0

从我的角度来看,挂载永久性磁盘的错误消息实际上不是描述性的。根据您的配置文件使用空白磁盘。

需要检查的一些事项:

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

希望这可以帮助。

于 2016-10-01T12:53:26.777 回答
0

您遇到的问题可能是使用 RC 而不是 Pod 与 Persistent Disk 交互引起的。

正如文档中提到的:

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

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

于 2016-10-04T10:29:10.777 回答