Modifique os contêineres de recursos do Ops Manager ou do MongoDB Kubernetes
Nesta página
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 otemplate
ou sepodTemplate
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 otemplate
oupodTemplate
se aplica.
Definir uma montagem de volume para um recurso do MongoDB Kubernetes
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:
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: {} Aplique a definição de recurso atualizada:
kubectl apply -f <database-resource-conf>.yaml -n <metadata.namespace>
Ajustar as imagens do Docker de recursos do MongoDB Kubernetes com um InitContailer
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:
spec.podSpec.podTemplate
: adicione um InitContailer privilegiado a um container de recursos de reconhecimento de data center MongoDB.spec.statefulSet.spec.template
: adicione um InitContailer privilegiado a um container de recursos do Ops Manager.
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.
Para ajustar imagens Docker para um container de recurso de MongoDB database:
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 valorkeepalive
para o valor recomendado de120
:spec: podSpec: podTemplate: spec: initContainers: - name: "adjust-tcp-keepalive" image: "busybox:latest" securityContext: privileged: true command: ["sysctl", "-w", "net.ipv4.tcp_keepalive_time=120"] 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
Crie imagens personalizadas com modelos Dockerfile
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.
Modelos de Dockerfile do MongoDB
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.
Imagens de contexto
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
docker build
Exemplo
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.