
¿Existe alguna forma en Kubernetes de activar un trabajo para que se ejecute en mis contenedores a pedido?
El caso de uso es poder sincronizar los contenedores desde S3 con un volumen persistente bajo demanda. En la arquitectura actual de la aplicación, se agrega contenido nuevo a S3 y se sincroniza con un grupo de servidores que se administran con Chef. Necesito tener una forma para que un equipo pueda activar esta funcionalidad en los contenedores que se ejecutan en Kubernetes.
Respuesta1
En realidad, Kubernetes representa un mecanismo flexible para cargas de trabajo de tareas automatizadas, como procesos únicos.Trabajosy procesos periódicos comoCronJobs, que están incluidos en batch/v1
el objeto API de KubernetesmodeloPor lo tanto, la solución de @Tim es bastante decente para mí.
Supongo que podrías activar algún módulo con un aws-cli
tablero para activar la acción de sincronización entre los mapas mapeados.CLORURO DE POLIVINILOen este contenedor y apunte al almacenamiento S3. Para ello, puede crear su propia imagen portada con el binario necesario o, por ejemplo, utilizar una solución preparada como docker-kubectl-awscli
una imagen mantenida por@Experto360.
El siguiente trabajo ejecutará aws s3 sync
un comando dentro de un contenedor particular e iniciará una acción de sincronización entre las partes objetivo:
apiVersion: batch/v1
kind: Job
metadata:
name: backup-s3
spec:
template:
spec:
containers:
- name: kubectl-aws
image: expert360/kubectl-awscli:v1.11.2
env:
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: aws-s3-key
key: aws-access-key-id
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: aws-s3-access-key
key: aws-secret-access-key
command: [ "/bin/bash", "-c", "aws s3 sync s3://my-bucket/ /data/backup" ]
volumeMounts:
- name: backup-aws
mountPath: /data/backup
volumes:
- name: backup-aws
persistentVolumeClaim:
claimName: backup-aws-claim
restartPolicy: Never
Debe proporcionar las variables de entorno aws-cli
correspondientes almacenadas en Kubernetes en particular.AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
Secretoobjetos.
Respuesta2
Échale un vistazo al proyecto:https://github.com/nuvo/skbn. También puede utilizar las funcionalidades de kube2iam.