Menu Docs
Página inicial do Docs
/
Operador de Kubernetes do MongoDB Enterprise

Modifique os contêineres de recursos do Ops Manager ou do MongoDB Kubernetes

Nesta página

  • Definir uma montagem de volume para um recurso do MongoDB Kubernetes
  • Ajustar as imagens do Docker de recursos do MongoDB Kubernetes com um InitContailer
  • Crie imagens personalizadas com modelos Dockerfile

Você pode modificar os contêineres no Pods em que o Ops Manager e os recursos de banco de dados de dados MongoDB são executados usando a configuração template ou podTemplate que se aplica à sua implantação:

  • MongoDB database: spec.podSpec.podTemplate

  • Ops Manager: spec.statefulSet.spec.template

  • Serviço de Backup Daemon: spec.backup.statefulSet.spec.template

Para revisar quais campos você pode adicionar a um template ou podTemplate, consulte a documentação do Kubernetes.

Quando você cria containers com um template ou podTemplate, o Kubernetes Operator lida com a criação de containers de forma diferente com base no name que você fornece para cada container na array containers :

  • Se o name campo corresponder ao nome da imagem do recurso aplicável, o Kubernetes Operador atualizará o MongoDB Ops Manager ou o MongoDB database container de de dados do MongoDB no Pod ao qual o template ou se podTemplate aplica:

    • Ops Manager: mongodb-enterprise-ops-manager

    • Serviço de Daemon de Backup: mongodb-backup-daemon

    • MongoDB database: mongodb-enterprise-database

    • banco de dados de aplicativo: mongodb-enterprise-appdb

  • Se o name campo não corresponder ao nome da imagem do recurso aplicável, o operador Kubernetes criará um novo container em cada Pod ao qual o template ou podTemplate se aplica.

Arquivos no disco em containers em Pods não sobrevivem a falhas ou reinicializações de contêineres. Com a configuração , você spec.podSpec.podTemplate pode adicionar um suporte de volume para persistir os dados em um recurso de banco de dados de dados MongoDB durante a vida útil do Pod.

Para criar uma montagem de volume para um recurso de reconhecimento de data center MongoDB:

  1. Atualize a definição do recurso do MongoDB database para incluir uma montagem de volume para container nos pods de reconhecimento de data center que o Kubernetes Operator cria.

    Exemplo

    Use spec.podSpec.podTemplate para definir uma montagem de volume:

    podSpec:
    podTemplate:
    spec:
    containers:
    - name: mongodb-enterprise-database
    volumeMounts:
    - mountPath: </new/mount/path>
    name: survives-restart
    volumes:
    - name: survives-restart
    emptyDir: {}
  2. Aplique a definição de recurso atualizada:

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

MongoDB As imagens do Docker de recursos são executadas no RHEL e usam a configuração de sistema padrão do RHEL. Para ajustar a configuração do sistema RHEL subjacente nos MongoDB contêineres de recursos do , adicione um contêiner de entrada privilegiado do InitContainer usando uma das seguintes configurações:

Exemplo

As imagens do Docker do recurso do MongoDB database usam o tempo padrão do RHEL keepalive de 7200. O MongoDB recomenda um tempo mais curto de keepalive 120 para comando de banco de dados.

Você pode ajustar o tempo de keepalive nas imagens do Docker do recurso de reconhecimento de data center se tiver tempos limite de rede ou erros de soquete na comunicação entre clientes e os recursos de reconhecimento de data center.

Dica

Veja também:

Para ajustar imagens Docker para um container de recurso de MongoDB database:

  1. Atualize a definição de recurso do MongoDB database para anexar um InitContailer privilegiado aos pods de reconhecimento de data center que o Kubernetes Operator cria.

    Exemplo

    Altere spec.podSpec.podTemplate o valor keepalive para o valor recomendado de 120:

    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. Aplique a definição de recurso atualizada:

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

O Kubernetes adiciona um InitContainer privilegiado a cada Pod que o Operador Kubernetes cria utilizando a MongoDB definição de recurso do .

Abra uma sessão de shell para um contêiner em execução no pod do recurso do banco de dados e verifique suas alterações.

Exemplo

Para seguir o exemplo keepalive anterior, invoque o seguinte comando para obter o valor keepalive atual:

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

Dica

Veja também:

Você pode modificar os modelos do MongoDB Dockerfile para criar imagens personalizadas do Kubernetes Operator adequadas ao seu caso de uso. Para construir uma imagem personalizada, você precisa de:

  • Seu Dockerfile personalizado, modificado a partir de um modelo do MongoDB.

  • A imagem de contexto fornecida pelo MongoDB para o seu modelo.

Os Dockerfiles usados para construir imagens de container estão disponíveis publicamente no MongoDB Enterprise Kubernetes Github repositório .

O diretório Dockerfile é organizado por nome do recurso, versão e distribuição:

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

Copie o modelo que você deseja usar para seu próprio Dockerfile e modifique conforme desejado.

Para construir uma imagem a partir de qualquer modelo MongoDB Dockerfile, você deve fornecer sua imagem de contexto.

Cada modelo Dockerfile tem uma imagem de contexto associada, recuperável do mesmo Quay registro como as imagens originais. As imagens de contexto são sempre marcadas no formato quay.io/mongodb/<resource-name>:<image-version>-context.

Para fornecer uma imagem de contexto para docker build, inclua a opção --build-arg com a variável imagebase definida para uma marcação Quay.io, em que <resource-name> e <image-version> correspondem ao seu modelo Dockerfile.

Exemplo

Se você deseja construir a imagem do mongodb-enterprise-database versão 2.0.0 para qualquer distribuição, inclua:

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

A distribuição Ubuntu para mongodb-enterprise-operator versão 1.9.1 é baseada em ubuntu:1604 por padrão. Neste exemplo, esse modelo Dockerfile base é modificado para usar ubuntu:1804 e salvo como myDockerfile.

O comando a seguir cria a imagem personalizada e fornece a ela a marcação 1.9.1-ubuntu-1804:

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

Observação

Inclua um hífen ( - ) no final de docker build para ler a saída de cat myDockerfile em vez de fornecer um diretório local como contexto de construção.

Dica

Veja também:

Para saber mais sobre docker build o , consulte a documentação do Docker.

Voltar

Solução de problemas