Ошибка монтирования томов в Openshift (Next gen)

Я тестирую новую платформу Openshift, основанную на Docker и Kubernetes.

Я создал новый проект с нуля, затем, когда я пытаюсь развернуть простую службу MongoDB (также с приложением python), я получил следующие ошибки в разделе "Мониторинг" в веб-консоли:

Unable to mount volumes for pod "mongodb-1-sfg8t_rob1(e9e53040-ab59-11e6-a64c-0e3d364e19a5)": timeout expired waiting for volumes to attach/mount for pod "mongodb-1-sfg8t"/"rob1". list of unattached/unmounted volumes=[mongodb-data]
Error syncing pod, skipping: timeout expired waiting for volumes to attach/mount for pod "mongodb-1-sfg8t"/"rob1". list of unattached/unmounted volumes=[mongodb-data]

Кажется, проблема с установкой PVC в контейнере, однако PVC правильно создан и ограничен:

oc get pvc

Возвращает:

NAME           STATUS    VOLUME         CAPACITY   ACCESSMODES   AGE
mongodb-data   Bound     pv-aws-9dged   1Gi        RWO           29m

Я развернул его с помощью следующих команд:

oc process -f openshift/templates/mongodb.json | oc create -f -

oc deploy mongodb --latest

Полный журнал из веб-консоли:

Содержимое шаблона, которое я использовал:

{
    "kind": "Template",
    "apiVersion": "v1",
    "metadata": {
        "name": "mongo-example",
        "annotations": {
            "openshift.io/display-name": "Mongo example",
            "tags": "quickstart,mongo"
        }
    },
    "labels": {
        "template": "mongo-example"
    },
    "message": "The following service(s) have been created in your project: ${NAME}.",
    "objects": [
        {
            "kind": "PersistentVolumeClaim",
            "apiVersion": "v1",
            "metadata": {
                "name": "${DATABASE_DATA_VOLUME}"
            },
            "spec": {
                "accessModes": [
                    "ReadWriteOnce"
                ],
                "resources": {
                    "requests": {
                        "storage": "${DB_VOLUME_CAPACITY}"
                    }
                }
            }
        },
        {
            "kind": "Service",
            "apiVersion": "v1",
            "metadata": {
                "name": "${DATABASE_SERVICE_NAME}",
                "annotations": {
                    "description": "Exposes the database server"
                }
            },
            "spec": {
                "ports": [
                    {
                        "name": "mongodb",
                        "port": 27017,
                        "targetPort": 27017
                    }
                ],
                "selector": {
                    "name": "${DATABASE_SERVICE_NAME}"
                }
            }
        },
        {
            "kind": "DeploymentConfig",
            "apiVersion": "v1",
            "metadata": {
                "name": "${DATABASE_SERVICE_NAME}",
                "annotations": {
                    "description": "Defines how to deploy the database"
                }
            },
            "spec": {
                "strategy": {
                    "type": "Recreate"
                },
                "triggers": [
                    {
                        "type": "ImageChange",
                        "imageChangeParams": {
                            "automatic": true,
                            "containerNames": [
                                "mymongodb"
                            ],
                            "from": {
                                "kind": "ImageStreamTag",
                                "namespace": "",
                                "name": "mongo:latest"
                            }
                        }
                    },
                    {
                        "type": "ConfigChange"
                    }
                ],
                "replicas": 1,
                "selector": {
                    "name": "${DATABASE_SERVICE_NAME}"
                },
                "template": {
                    "metadata": {
                        "name": "${DATABASE_SERVICE_NAME}",
                        "labels": {
                            "name": "${DATABASE_SERVICE_NAME}"
                        }
                    },
                    "spec": {
                        "volumes": [
                            {
                                "name": "${DATABASE_DATA_VOLUME}",
                                "persistentVolumeClaim": {
                                    "claimName": "${DATABASE_DATA_VOLUME}"
                                }
                            }
                        ],
                        "containers": [
                            {
                                "name": "mymongodb",
                                "image": "mongo:latest",
                                "ports": [
                                    {
                                        "containerPort": 27017
                                    }
                                ],
                                "env": [
                                    {
                                        "name": "MONGODB_USER",
                                        "value": "${DATABASE_USER}"
                                    },
                                    {
                                        "name": "MONGODB_PASSWORD",
                                        "value": "${DATABASE_PASSWORD}"
                                    },
                                    {
                                        "name": "MONGODB_DATABASE",
                                        "value": "${DATABASE_NAME}"
                                    }
                                ],
                                "volumeMounts": [
                                    {
                                        "name": "${DATABASE_DATA_VOLUME}",
                                        "mountPath": "/data/db"
                                    }
                                ],
                                "readinessProbe": {
                                    "timeoutSeconds": 1,
                                    "initialDelaySeconds": 5,
                                    "exec": {
                                        "command": [ "/bin/bash", "-c", "mongo --eval 'db.getName()'"]
                                    }
                                },
                                "livenessProbe": {
                                    "timeoutSeconds": 1,
                                    "initialDelaySeconds": 30,
                                    "tcpSocket": {
                                        "port": 27017
                                    }
                                },
                                "resources": {
                                    "limits": {
                                        "memory": "${MEMORY_MONGODB_LIMIT}"
                                    }
                                }
                            }
                        ]
                    }
                }
            }
        }
    ],
    "parameters": [
        {
            "name": "NAME",
            "displayName": "Name",
            "description": "The name",
            "required": true,
            "value": "mongo-example"
        },    
        {
            "name": "MEMORY_MONGODB_LIMIT",
            "displayName": "Memory Limit (MONGODB)",
            "required": true,
            "description": "Maximum amount of memory the MONGODB container can use.",
            "value": "512Mi"
        },
        {
            "name": "DB_VOLUME_CAPACITY",
            "displayName": "Volume Capacity",
            "description": "Volume space available for data, e.g. 512Mi, 2Gi",
            "value": "512Mi",
            "required": true
        },
        {
            "name": "DATABASE_DATA_VOLUME",
            "displayName": "Volumne name for DB data",
            "required": true,
            "value": "mongodb-data"
        },
        {
            "name": "DATABASE_SERVICE_NAME",
            "displayName": "Database Service Name",
            "required": true,
            "value": "mongodb"
        },
        {
            "name": "DATABASE_NAME",
            "displayName": "Database Name",
            "required": true,
            "value": "test1"
        },
        {
            "name": "DATABASE_USER",
            "displayName": "Database Username",
            "required": false    
        },
        {
            "name": "DATABASE_PASSWORD",
            "displayName": "Database User Password",
            "required": false    
        }
    ]
}

Есть ли проблема с моим шаблоном? Это проблема OpenShift? Где и как я могу получить дополнительную информацию о проблеме монтирования в журналах OpenShift?

1 ответ

Итак, я думаю, что вы сталкиваетесь с двумя разными проблемами.

  1. Ваш шаблон настроен для извлечения изображения Mongo из Dockerhub (задается пустым значением "namespace". При попытке извлечь изображение mongo: latest из Dockerhub в веб-интерфейсе пользователя, вас приветствует дружеское сообщение, уведомляющее вас о том, что образ докера не может быть использован, потому что он запускается от имени root: Ошибка OpenShift
  2. В OpenShift Online Dev Preview недавно возникли проблемы, связанные с PVC ( http://status.preview.openshift.com/). В частности, об этой сообщенной ошибке на данный момент, https://bugzilla.redhat.com/show_bug.cgi?id=1392650. Это может быть причиной некоторых проблем, так как "официальный" образ Mongo в OpenShift также не может быть создан.

Я хотел бы направить вас к шаблону OpenShift MongoDB, а не к тому, который использовался в предварительной версии для разработчиков, но, надеюсь, даст вам хорошее направление на будущее! https://github.com/openshift/openshift-ansible/blob/master/roles/openshift_examples/files/examples/v1.4/db-templates/mongodb-persistent-template.json

Другие вопросы по тегам