Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/
Operador de Kubernetes empresarial

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

Você pode modificar os containers nos Pods em que os recursos de banco de dados do Ops Manager e do MongoDB são executados usando a template podTemplate configuração ou que se aplica ao seu sistema:

Para revisar quais campos você pode adicionar a template um podTemplate ou, 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 de recurso aplicável, o Operador Kubernetes atualizará o Gerenciador de Operações ou contêiner de banco de dados 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 de recurso aplicável, o Operador Kubernetes criará um novo container em cada Pod ao qual o template ou podTemplate se aplica.

Os arquivos no disco em contêineres em Pods não sobrevivem a falhas ou reinicializações de contêineres. Usando a configuração, você spec.podSpec.podTemplate pode adicionar uma montagem de volume para persistir dados em um recurso de banco 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 InitContainer privilegiado utilizando 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

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 em um container 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

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 repositório MongoDB Enterprise Kubernetes GitHub.

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 registro Quay que as imagens originais. As imagens de contexto são sempre marcadas no quay.io/mongodb/<resource-name>:<image-version>-context formato.

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

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

Voltar

Solução de problemas

Nesta página