Merge pull request #39783 from marianogg9/es-finalizers
[ES] Add content/es/docs/concepts/overview/working-with-objects/finalizers
This commit is contained in:
commit
889b43781f
|
@ -0,0 +1,87 @@
|
||||||
|
---
|
||||||
|
title: Finalizadores
|
||||||
|
content_type: concept
|
||||||
|
weight: 80
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- overview -->
|
||||||
|
|
||||||
|
{{<glossary_definition term_id="finalizer" length="long">}}
|
||||||
|
|
||||||
|
Puedes usar finalizadores para controlar {{<glossary_tooltip text="garbage collection" term_id="garbage-collection">}}
|
||||||
|
de los recursos alertando a los controladores para que ejecuten tareas de limpieza especificas antes de eliminar el recurso.
|
||||||
|
|
||||||
|
Los finalizadores usualmente no especifican codigo a ejecutar, sino que son generalmente listas de parametros referidos a
|
||||||
|
un recurso especifico, similares a las anotaciones. Kubernetes especifica algunos finalizadores automaticamente,
|
||||||
|
pero podrías especificar tus propios.
|
||||||
|
|
||||||
|
## Cómo funcionan los finalizadores
|
||||||
|
|
||||||
|
Cuando creas un recurso utilizando un archivo de manifiesto, puedes especificar
|
||||||
|
finalizadores mediante el campo `metadata.finalizers`. Cuando intentas eliminar el
|
||||||
|
recurso, el servidor API que maneja el pedido de eliminación ve los valores en el
|
||||||
|
campo `finalizadores` y hace lo siguiente:
|
||||||
|
|
||||||
|
* Modifica el objecto para agregar un campo `metadata.deletionTimestamp` con
|
||||||
|
el momento en que comenzaste la eliminación.
|
||||||
|
* Previene que el objeto sea eliminado hasta que su campo `metadata.finalizers`
|
||||||
|
este vacío.
|
||||||
|
* Retorna un codigo de estado `202` (HTTP "Aceptado")
|
||||||
|
|
||||||
|
El controlador que meneja ese finalizador recibe la actualización del objecto
|
||||||
|
configurando el campo `metadata.deletionTimestamp`, indicando que la eliminación
|
||||||
|
del objeto ha sido solicitada.
|
||||||
|
El controlador luego intenta satisfacer los requerimientos de los finalizadores
|
||||||
|
especificados para ese recurso. Cada vez que una condición del finalizador es
|
||||||
|
satisfecha, el controlador remueve ese parametro del campo `finalizadores`. Cuando
|
||||||
|
el campo `finalizadores` esta vacío, un objeto con un campo `deletionTimestamp`
|
||||||
|
configurado es automaticamente borrado. Puedes tambien utilizar finalizadores para
|
||||||
|
prevenir el borrado de recursos no manejados.
|
||||||
|
|
||||||
|
Un ejemplo usual de un finalizador es `kubernetes.io/pv-protection`, el cual
|
||||||
|
previene el borrado accidental de objetos `PersistentVolume`. Cuando un objeto
|
||||||
|
`PersistentVolume` está en uso por un Pod, Kubernetes agrega el finalizador
|
||||||
|
`pv-protection`. Si intentas elimiar el `PersistentVolume`, este pasa a un estado
|
||||||
|
`Terminating`, pero el controlador no puede eliminarlo ya que existe el finalizador.
|
||||||
|
Cuando el Pod deja de utilizar el `PersistentVolume`, Kubernetes borra el finalizador
|
||||||
|
`pv-protection` y el controlador borra el volumen.
|
||||||
|
|
||||||
|
## Referencias de dueño, etiquetas y finalizadores (#owners-labels-finalizers)
|
||||||
|
|
||||||
|
Al igual que las {{<glossary_tooltip text="etiquetas" term_id="label">}}, las
|
||||||
|
[referencias de dueño](/docs/concepts/overview/working-with-objects/owners-dependents/)
|
||||||
|
describen las relaciones entre objetos en Kubernetes, pero son utilizadas para un
|
||||||
|
propósito diferente. Cuando un
|
||||||
|
{{<glossary_tooltip text="controlador" term_id="controller">}} maneja objetos como
|
||||||
|
Pods, utiliza etiquetas para identificar cambios a grupos de objetos relacionados.
|
||||||
|
Por ejemplo, cuando un {{<glossary_tooltip text="Job" term_id="job">}} crea uno
|
||||||
|
o más Pods, el controlador del Job agrega etiquetas a esos pods para identificar cambios
|
||||||
|
a cualquier Pod en el cluster con la misma etiqueta.
|
||||||
|
|
||||||
|
El controlador del Job tambien agrega *referencias de dueño* a esos Pods, referidas
|
||||||
|
al Job que creo a los Pods. Si borras el Job mientras estos Pods estan corriendo,
|
||||||
|
Kubernetes utiliza las referencias de dueño (no las etiquetas) para determinar
|
||||||
|
cuáles Pods en el cluster deberían ser borrados.
|
||||||
|
|
||||||
|
Kubernetes también procesa finalizadores cuando identifica referencias de dueño en
|
||||||
|
un recurso que ha sido marcado para eliminación.
|
||||||
|
|
||||||
|
En algunas situaciones, los finalizadores pueden bloquear el borrado de objetos
|
||||||
|
dependientes, causando que el objeto inicial a borrar permanezca más de lo
|
||||||
|
esperado sin ser completamente eliminado. En esas situaciones, deberías chequear
|
||||||
|
finalizadores y referencias de dueños en los objetos y sus dependencias para
|
||||||
|
intentar solucionarlo.
|
||||||
|
|
||||||
|
{{<note>}}
|
||||||
|
En casos donde los objetos queden bloqueados en un estado de eliminación, evita
|
||||||
|
borrarlos manualmente para que el proceso continue. Los finalizadores usualmente
|
||||||
|
son agregados a los recursos por una razón, por lo cual eliminarlos forzosamente
|
||||||
|
puede causar problemas en tu cluster. Borrados manuales sólo deberían ejecutados
|
||||||
|
cuando el propósito del finalizador es entendido y satisfecho de alguna otra manera (por
|
||||||
|
ejemplo, borrando manualmente un objeto dependiente).
|
||||||
|
{{</note>}}
|
||||||
|
|
||||||
|
## {{% heading "whatsnext" %}}
|
||||||
|
|
||||||
|
* Lea [Using Finalizers to Control Deletion](/blog/2021/05/14/using-finalizers-to-control-deletion/)
|
||||||
|
en el blog de Kubernetes.
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
title: Finalizador
|
||||||
|
id: finalizer
|
||||||
|
date: 2021-07-07
|
||||||
|
full_link: /docs/concepts/overview/working-with-objects/finalizers/
|
||||||
|
short_description: >
|
||||||
|
Un atributo de un namespace que dicta a Kubernetes a esperar hasta que condiciones
|
||||||
|
especificas son satisfechas antes que pueda borrar un objeto marcado para eliminacion.
|
||||||
|
aka:
|
||||||
|
tags:
|
||||||
|
- fundamental
|
||||||
|
---
|
||||||
|
Los finalizadores son atributos de un namespace que instruyen a Kubernetes a
|
||||||
|
esperar a que ciertas condiciones sean satisfechas antes que pueda borrar
|
||||||
|
definitivamente un objeto que ha sido marcado para eliminarse.
|
||||||
|
Los finalizadores alertan a los {{<glossary_tooltip text="controladores" term_id="controller">}}
|
||||||
|
para borrar recursos que poseian esos objetos eliminados.
|
||||||
|
|
||||||
|
<!--more-->
|
||||||
|
|
||||||
|
Cuando instruyes a Kubernetes a borrar un objeto que tiene finalizadores
|
||||||
|
especificados, la API de Kubernetes marca ese objeto para eliminacion
|
||||||
|
configurando el campo `metadata.deletionTimestamp`, y retorna un codigo de
|
||||||
|
estado `202` (HTTP "Aceptado").
|
||||||
|
El objeto a borrar permanece en un estado
|
||||||
|
de terminacion mientras el plano de contol, u otros componentes, ejecutan
|
||||||
|
las acciones definidas en los finalizadores.
|
||||||
|
Luego de que esas acciones son completadas, el controlador borra los
|
||||||
|
finalizadores relevantes del objeto. Cuando el campo `metadata.finalizers`
|
||||||
|
esta vacio, Kubernetes considera el proceso de eliminacion completo y borra
|
||||||
|
el objeto.
|
||||||
|
|
||||||
|
Puedes utilizar finalizadores para controlar {{<glossary_tooltip text="garbage collection" term_id="garbage-collection">}}
|
||||||
|
de recursos. Por ejemplo, puedes definir un finalizador para borrar recursos
|
||||||
|
relacionados o infraestructura antes que el controlador elimine el objeto.
|
Loading…
Reference in New Issue