You can modify the containers in the Pods in which Ops Manager and MongoDB database resources run using the template or podTemplate setting that applies to your deployment:
MongoDB database:
spec.podSpec.podTemplateOps Manager:
spec.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 :
If the
namefield matches the name of the applicable resource image, the Kubernetes Operator updates the Ops Manager or MongoDB database container in the Pod to which thetemplateorpodTemplateapplies:Ops Manager:
mongodb-kubernetes-ops-managerBackup Daemon Service:
mongodb-backup-daemonMongoDB database:
mongodb-enterprise-databasebanco de dados de aplicativo:
mongodb-kubernetes-appdb
If the
namefield does not match the name of the applicable resource image, the Kubernetes Operator creates a new container in each Pod to which thetemplateorpodTemplateapplies.
Definir uma montagem de volume para um recurso do MongoDB Kubernetes
On-disk files in containers in Pods don't survive container crashes or restarts. Using the spec.podSpec.podTemplate setting, you can add a volume mount to persist data in a MongoDB database resource for the life of the 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.podTemplatepara 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.
Dica
O tempo de manutenção do TCP afeta os sistemas MongoDB? no Manual do MongoDB
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.podTemplateo valorkeepalivepara 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
Dica
Configuração do sistema operacional no Manual do MongoDB.
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 repositório MongoDB 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.
Imagens de contexto
Para construir uma imagem a partir de qualquer modelo MongoDB Dockerfile, você deve fornecer sua imagem de contexto.
Each Dockerfile template has one associated context image, retrievable from the same Quay registry as the original images. Context image are always tagged in the format 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-kubernetes-database:2.0.0-context
docker build Exemplo
A distribuição Ubuntu para mongodb-kubernetes-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-kubernetes-operator:1.9.1-context \ --tag mongodb-kubernetes-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.