Merge pull request #39783 from marianogg9/es-finalizers

[ES] Add content/es/docs/concepts/overview/working-with-objects/finalizers
This commit is contained in:
Kubernetes Prow Robot 2023-03-14 09:20:16 -07:00 committed by GitHub
commit 889b43781f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 122 additions and 0 deletions

View File

@ -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.

View File

@ -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.