stop son que privileged pods delete monitoring kubernetes

monitoring - son - Contenedores sidecar en Kubernetes ¿Trabajos?



que es un pod docker (1)

Puede usar la api hacia abajo para averiguar su propio nombre de pod desde el sidecar, y luego recuperar su propio pod desde el apiserver para buscar el estado existente. Déjame saber cómo va esto.

Usamos los Job Kubernetes para una gran cantidad de cómputo por lotes aquí y me gustaría instrumentar cada trabajo con un sidecar de monitoreo para actualizar un sistema de seguimiento centralizado con el progreso de un trabajo.

El único problema es que no puedo entender qué son las semánticas (o se supone que son) de varios contenedores en un trabajo.

De todos modos, le di un tiro (con un sidecar alpine que imprimió "hola" cada 1 segundo) y después de que mi tarea principal se completó, los Job se consideran Successful y los kubectl get pods en Kubernetes 1.2.0 muestra:

NAME READY STATUS RESTARTS AGE job-69541b2b2c0189ba82529830fe6064bd-ddt2b 1/2 Completed 0 4m job-c53e78aee371403fe5d479ef69485a3d-4qtli 1/2 Completed 0 4m job-df9a48b2fc89c75d50b298a43ca2c8d3-9r0te 1/2 Completed 0 4m job-e98fb7df5e78fc3ccd5add85f8825471-eghtw 1/2 Completed 0 4m

Y si describo una de esas vainas.

State: Terminated Reason: Completed Exit Code: 0 Started: Thu, 24 Mar 2016 11:59:19 -0700 Finished: Thu, 24 Mar 2016 11:59:21 -0700

A continuación, GET ing the yaml del trabajo muestra información por contenedor:

status: conditions: - lastProbeTime: null lastTransitionTime: 2016-03-24T18:59:29Z message: ''containers with unready status: [pod-template]'' reason: ContainersNotReady status: "False" type: Ready containerStatuses: - containerID: docker://333709ca66462b0e41f42f297fa36261aa81fc099741e425b7192fa7ef733937 image: luigi-reduce:0.2 imageID: docker://sha256:5a5e15390ef8e89a450dac7f85a9821fb86a33b1b7daeab9f116be252424db70 lastState: {} name: pod-template ready: false restartCount: 0 state: terminated: containerID: docker://333709ca66462b0e41f42f297fa36261aa81fc099741e425b7192fa7ef733937 exitCode: 0 finishedAt: 2016-03-24T18:59:30Z reason: Completed startedAt: 2016-03-24T18:59:29Z - containerID: docker://3d2b51436e435e0b887af92c420d175fafbeb8441753e378eb77d009a38b7e1e image: alpine imageID: docker://sha256:70c557e50ed630deed07cbb0dc4d28aa0f2a485cf7af124cc48f06bce83f784b lastState: {} name: sidecar ready: true restartCount: 0 state: running: startedAt: 2016-03-24T18:59:31Z hostIP: 10.2.113.74 phase: Running

¿Entonces parece que mi sidecar debería ver el proceso principal (¿cómo?) Y salir con gracia una vez que detecta que está solo en la cápsula? Si esto es correcto, entonces ¿hay mejores prácticas / patrones para esto (debería salir el sidecar con el código de retorno del contenedor principal? ¿Pero cómo lo consigue?)

** Actualización ** Después de una experimentación adicional, también descubrí lo siguiente: Si hay dos contenedores en un pod, entonces no se considera exitoso hasta que todos los contenedores en el pod regresen con el código de salida 0.

Además, si restartPolicy: OnFailure se establece en la especificación del pod, entonces cualquier contenedor en el pod que termine con un código de salida distinto a cero se reiniciará en el mismo pod (esto podría ser útil para que un sidecar de monitoreo cuente el número de reintentos y elimine el trabajo después de un cierto número (para solucionarlo, no hay un máximo de reintentos disponibles actualmente en los trabajos de Kubernetes)