[Cloud Native] El uso de DaemonSet y Job en el controlador de Kubernetes

 

 

Tabla de contenido

DaemonSet

1 ¿Qué es DaemonSet?

2 Uso de DaemonSet

Trabajo

1 ¿Qué es el trabajo?

2 usando trabajo

3 trabajos que se limpian automáticamente

El controlador no puede resolver el problema.


DaemonSet

1 ¿Qué es DaemonSet?

DaemonSet | Kubernetes

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?

Trabajo | Kubernetes

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 Completeo Failed) es utilizar el mecanismo TTL proporcionado por el controlador TTL. Al configurar el .spec.ttlSecondsAfterFinishedcampo 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-ttlse 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

Supongo que te gusta

Origin blog.csdn.net/weixin_53678904/article/details/132233724
Recomendado
Clasificación