Docs Menu
Docs Home
/ /

Modificar los contenedores de recursos de Kubernetes de Ops Manager o MongoDB

Puedes modificar los contenedores en el Pods en los que se ejecutan recursos de base de datos de Ops Manager y MongoDB mediante el template o podTemplate configuración que se aplica a su implementación:

  • Base de datos MongoDB: spec.podSpec.podTemplate

  • Ops Manager: spec.statefulSet.spec.template

  • Servicio Daemon de respaldo: spec.backup.statefulSet.spec.template

Para revisar qué campos puedes agregar a un template o podTemplate un, consulta la documentación de Kubernetes.

Cuando crea contenedores con un template o podTemplate, el operador de Kubernetes maneja la creación de contenedores de manera diferente según el name que proporcione para cada contenedor en la matriz containers:

  • Si el name campo coincide con el nombre de la imagen de recurso aplicable, el operador de Kubernetes actualiza el contenedor de base de datos de Ops Manager o MongoDB en el pod al que se template podTemplate aplica o:

    • Ops Manager: mongodb-kubernetes-ops-manager

    • Servicio Daemon de respaldo: mongodb-backup-daemon

    • Base de datos MongoDB: mongodb-enterprise-database

    • Base de datos de la aplicación: mongodb-kubernetes-appdb

  • Si el name campo no coincide con el nombre de la imagen de recurso aplicable, el operador de Kubernetes crea un nuevo contenedor en cada pod al que se template podTemplate aplica o.

Los archivos en disco de los contenedores de los pods no sobreviven a fallos o reinicios del contenedor. Con la configuración, puede spec.podSpec.podTemplate agregar un montaje de volumen para conservar los datos en un recurso de base de datos MongoDB durante la vida útil del pod.

Para crear un punto de montaje de volumen para un recurso de base de datos MongoDB:

  1. Actualice la definición de recursos de la base de datos MongoDB para incluir un montaje de volumen para contenedores en los pods de base de datos que crea el operador de Kubernetes.

    Ejemplo

    Utilice para definir un montaje de spec.podSpec.podTemplate volumen:

    podSpec:
    podTemplate:
    spec:
    containers:
    - name: mongodb-enterprise-database
    volumeMounts:
    - mountPath: </new/mount/path>
    name: survives-restart
    volumes:
    - name: survives-restart
    emptyDir: {}
  2. Aplicar la definición de recurso actualizada:

    kubectl apply -f <database-resource-conf>.yaml -n <metadata.namespace>

MongoDB Las imágenes Docker de recursos se ejecutan en RHEL y utilizan la configuración predeterminada del sistema. Para ajustar la configuración subyacente del sistema RHEL en los MongoDB contenedores de recursos, agregue un contenedor de inicio privilegiado InitContainer con una de las siguientes opciones:

Ejemplo

Las imágenes Docker de los recursos de base de datos de MongoDB utilizan el tiempo predeterminado de RHEL (keepalive, 7200). MongoDB recomienda un tiempo keepalive más corto (120) para las implementaciones de bases de datos.

Puede ajustar el tiempo keepalive en las imágenes Docker de los recursos de la base de datos si experimenta tiempos de espera de red o errores de socket en la comunicación entre los clientes y los recursos de la base de datos.

Tip

¿El tiempo de conexión de TCP afecta las implementaciones de MongoDB? en el Manual de MongoDB

Para ajustar las imágenes de Docker para un contenedor de recursos de base de datos MongoDB:

  1. Actualice la definición de recursos de la base de datos MongoDB para agregar un InitContainer privilegiado a los pods de base de datos que crea el operador de Kubernetes.

    Ejemplo

    Cambie spec.podSpec.podTemplate el keepalive valor al valor recomendado 120 de:

    spec:
    podSpec:
    podTemplate:
    spec:
    initContainers:
    - name: "adjust-tcp-keepalive"
    image: "busybox:latest"
    securityContext:
    privileged: true
    command: ["sysctl", "-w", "net.ipv4.tcp_keepalive_time=120"]
  2. Aplicar la definición de recurso actualizada:

    kubectl apply -f <database-resource-conf>.yaml -n <metadata.namespace>

Kubernetes añade un InitContainer privilegiado a cada Pod que el operador de Kubernetes crea usando la definición de recurso MongoDB.

Abra una sesión de shell en un contenedor en ejecución en su recurso de base de datos Pod y verifique los cambios.

Ejemplo

Para seguir el ejemplo keepalive anterior, invoque el siguiente comando para obtener el valor keepalive actual:

> kubectl exec -n <metadata.namespace> -it <pod-name> -- cat /proc/sys/net/ipv4/tcp_keepalive_time
> 120

Tip

Configuración del sistema operativo en el manual de MongoDB.

Puedes modificar las plantillas de Dockerfile de MongoDB para crear imágenes de operador de Kubernetes personalizadas que se adapten a tu caso de uso. Para crear una imagen personalizada, necesitas:

  • Tu Dockerfile personalizado, modificado a partir de una plantilla de MongoDB.

  • La imagen de contexto proporcionada por MongoDB para su plantilla.

Los Dockerfiles utilizados para crear imágenes de contenedores están disponibles públicamente en el repositorio GitHub de MongoDB Kubernetes.

El directorio Dockerfile está organizado por nombre de recurso, versión y distribución:

├── <resource name>
│ └── <image version>
│ └── <base distribution>
│ └── Dockerfile template

Copia la plantilla que deseas utilizar en tu propio Dockerfile y modifícala como desees.

Para crear una imagen desde cualquier plantilla Dockerfile de MongoDB, debe proporcionar su imagen de contexto.

Cada plantilla de Dockerfile tiene una imagen de contexto asociada, que se puede recuperar del mismo registro de Quay que las imágenes originales. Las imágenes de contexto siempre se etiquetan con el quay.io/mongodb/<resource-name>:<image-version>-context formato.

Para proporcionar una imagen de contexto a docker build, incluya la opción --build-arg con la variable imagebase establecida en una etiqueta Quay.io, donde <resource-name> y <image-version> coinciden con su plantilla Dockerfile.

Ejemplo

Si desea crear la imagen de la versión mongodb-enterprise-database 2.0.0 para cualquier distribución, incluya:

--build-arg imagebase=quay.io/mongodb/mongodb-kubernetes-database:2.0.0-context

La distribución de Ubuntu para mongodb-kubernetes-operator versión 1.9.1 se basa en ubuntu:1604 por defecto. En este ejemplo, esa plantilla base de Dockerfile se modifica para usar ubuntu:1804 y se guarda como myDockerfile.

El siguiente comando crea la imagen personalizada y le asigna la etiqueta 1.9.1-ubuntu-1804:

cat myDockerfile | docker build --build-arg imagebase=quay.io/mongodb/mongodb-kubernetes-operator:1.9.1-context \
--tag mongodb-kubernetes-operator:1.9.1-ubuntu-1804 -

Nota

Incluya un guion (-) al final de docker build para leer la salida de cat myDockerfile en lugar de proporcionar un directorio local como contexto de compilación.

Tip

Para obtener más información docker build sobre, consulte la documentación de Docker.

Volver

Solucionar problemas

En esta página