Tabla de contenido
3 trabajos que se limpian automáticamente
El controlador no puede resolver el problema.
DaemonSet
1 ¿Qué es DaemonSet?
DaemonSet garantiza que todos (o algunos) nodos ejecuten una copia de un Pod. Cuando los nodos se unan al clúster, se les agregará un Pod. Estos pods también se reciclan cuando se elimina un nodo del clúster. Eliminar un DaemonSet eliminará todos los Pods que creó.
Algunos usos típicos de DaemonSet:
-
Ejecute demonios de clúster en cada nodo
-
Ejecute un demonio de recopilación de registros en cada nodo
-
Ejecute un demonio de monitoreo en cada nodo
Un uso simple es iniciar un DaemonSet en todos los nodos para cada tipo de demonio. Un uso un poco más complejo es implementar varios DaemonSets para el mismo tipo de demonio, cada uno con diferentes banderas y diferentes requisitos de memoria y CPU para diferentes tipos de hardware.
2 Uso de DaemonSet
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: nginx
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:1.19
imagePullPolicy: IfNotPresent
name: nginx
resources: {}
restartPolicy: Always
Trabajo
1 ¿Qué es el trabajo?
Un trabajo crea uno o más pods y continuará reintentando la ejecución de los pods hasta que la cantidad especificada de pods finalice con éxito. A medida que los pods se completan con éxito, el trabajo realiza un seguimiento de cuántos pods se completaron con éxito. Cuando el número alcanza el umbral de éxito especificado, la tarea (es decir, el trabajo) finaliza. Eliminar un trabajo borrará todos los pods creados. La operación de suspender el Trabajo eliminará todos los Pods activos del Trabajo hasta que el Trabajo se reanude nuevamente.
En un caso de uso simple, crearía un objeto de trabajo para ejecutar un pod hasta su finalización de manera confiable. El objeto Trabajo inicia un nuevo Pod cuando el primer Pod falla o se elimina (por ejemplo, debido a una falla o reinicio del hardware del nodo).
También puede usar trabajos para ejecutar varios pods en paralelo.
2 usando trabajo
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
# 当前任务出现失败 最大的重试次数
backoffLimit: 4
3 trabajos que se limpian automáticamente
Por lo general, los trabajos completados no necesitan conservarse en el sistema. Mantenerlos en el sistema todo el tiempo ejerce una presión adicional sobre el servidor API. Si el trabajo es administrado por algún controlador de nivel superior, como CronJob , CronJob puede limpiar el trabajo en función de una política de limpieza específica basada en la capacidad.
-
El mecanismo TTL del trabajo completado
-
Otra forma de limpiar automáticamente los trabajos completados (estado
Complete
oFailed
) es utilizar el mecanismo TTL proporcionado por el controlador TTL. Al configurar el.spec.ttlSecondsAfterFinished
campo Trabajo, el controlador puede limpiar los recursos completados. Cuando el controlador TTL limpia el trabajo, eliminará el objeto de trabajo en cascada. En otras palabras, elimina todos los objetos dependientes, incluidos los propios Pods y Jobs. Tenga en cuenta que cuando se elimina un Trabajo, el sistema tiene en cuenta sus garantías de ciclo de vida, como sus Finalizadores.
-
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-ttl
spec:
ttlSecondsAfterFinished: 100
template:
spec:
containers:
- name: pi
image: perl:5.34.0
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
Un trabajo pi-with-ttl
se puede eliminar automáticamente 100 segundos después de que finalice. Si este campo se establece en 0
, el trabajo se puede eliminar automáticamente inmediatamente después de que finaliza. Si este campo no está configurado, el controlador TTL no borrará automáticamente el trabajo una vez finalizado.
El controlador no puede resolver el problema.
-
Cómo proporcionar servicios de red para pods
-
Cómo lograr el equilibrio de carga entre múltiples Pods