|
| 1 | +--- |
| 2 | +reviewers: |
| 3 | +- ramrodo |
| 4 | +title: Eliminación Forzosa de Pods de StatefulSet |
| 5 | +content_type: task |
| 6 | +weight: 70 |
| 7 | +--- |
| 8 | + |
| 9 | +<!-- overview --> |
| 10 | +Esta página muestra cómo eliminar Pods que son parte de un |
| 11 | +{{< glossary_tooltip text="StatefulSet" term_id="StatefulSet" >}}, |
| 12 | +y explica las consideraciones a tener en cuenta al hacerlo. |
| 13 | + |
| 14 | +## {{% heading "prerequisites" %}} |
| 15 | + |
| 16 | +- Esta es una tarea bastante avanzada y tiene el potencial de violar algunas de las propiedades |
| 17 | + inherentes de StatefulSet. |
| 18 | +- Antes de proceder, familiarízate con las consideraciones enumeradas a continuación. |
| 19 | + |
| 20 | +<!-- steps --> |
| 21 | + |
| 22 | +## Consideraciones de StatefulSet |
| 23 | + |
| 24 | +En la operación normal de un StatefulSet, **nunca** hay necesidad de eliminar forzosamente un Pod de StatefulSet. |
| 25 | +El [controlador de StatefulSet](/es/docs/concepts/workloads/controllers/statefulset/) es responsable de |
| 26 | +crear, escalar y eliminar miembros del StatefulSet. Intenta asegurar que el número especificado |
| 27 | +de Pods, desde el ordinal 0 hasta N-1, estén vivos y listos. StatefulSet asegura que, en cualquier momento, |
| 28 | +exista como máximo un Pod con una identidad dada, corriendo en un clúster. Esto se refiere a la semántica de |
| 29 | +*como máximo uno* proporcionada por un StatefulSet. |
| 30 | + |
| 31 | +La eliminación manual forzada debe realizarse con precaución, ya que tiene el potencial de violar la |
| 32 | +semántica de como máximo uno, inherente a StatefulSet. Los StatefulSets pueden usarse para ejecutar aplicaciones distribuidas y |
| 33 | +agrupadas que necesitan una identidad de red estable y almacenamiento estable. |
| 34 | +Estas aplicaciones a menudo tienen configuraciones que dependen de un conjunto de un número fijo de |
| 35 | +miembros con identidades fijas. Tener múltiples miembros con la misma identidad puede ser desastroso |
| 36 | +y puede llevar a pérdida de datos (por ejemplo, escenario de cerebro dividido en sistemas basados en quórum). |
| 37 | + |
| 38 | +## Eliminar Pods |
| 39 | + |
| 40 | +Puedes realizar una eliminación de Pod paulatina con el siguiente comando: |
| 41 | + |
| 42 | +```shell |
| 43 | +kubectl delete pods <pod> |
| 44 | +``` |
| 45 | + |
| 46 | +Para que lo anterior conduzca a una terminación paulatina, el Pod no debe especificar un |
| 47 | +`pod.Spec.TerminationGracePeriodSeconds` de 0. La práctica de establecer un |
| 48 | +`pod.Spec.TerminationGracePeriodSeconds` de 0 segundos es insegura y se desaconseja rotundamente |
| 49 | +para los Pods de StatefulSet. La eliminación paulatina es segura y garantizará que el Pod |
| 50 | +se apague de [manera paulatina](/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination), antes de que kubelet elimine el nombre en el apiserver. |
| 51 | + |
| 52 | +Un Pod no se elimina automáticamente cuando un nodo no es accesible. |
| 53 | +Los Pods que se ejecutan en un Nodo inaccesible entran en el estado 'Terminating' o 'Unknown' después de un |
| 54 | +[tiempo de espera](es/docs/concepts/architecture/nodes/#Estados). |
| 55 | +Los Pods también pueden entrar en estos estados cuando el usuario intenta la eliminación paulatina de un Pod |
| 56 | +en un nodo inaccesible. |
| 57 | +Las únicas formas en que un Pod en tal estado puede ser eliminado del apiserver son las siguientes: |
| 58 | + |
| 59 | +- El objeto Node es eliminado (ya sea por ti, o por el [Controlador de Nodo](/es/docs/concepts/architecture/nodes/#controlador-de-nodos)).). |
| 60 | +- Kubelet, en el nodo no responsivo, comienza a responder, mata el Pod y elimina la entrada del apiserver. |
| 61 | +- Eliminación forzada del Pod por el usuario. |
| 62 | +- |
| 63 | +La mejor práctica recomendada es usar el primer o segundo enfoque. Si un nodo está confirmado |
| 64 | +como muerto (por ejemplo, desconectado permanentemente de la red, apagado, etc.), entonces elimina |
| 65 | +el objeto Node. Si el nodo es afectado de una partición de red, entonces trata de resolver esto |
| 66 | +o espera a que se resuelva. Cuando la partición se solucione, kubelet completará la eliminación |
| 67 | +del Pod y liberará su nombre en el apiserver. |
| 68 | + |
| 69 | +Normalmente, el sistema completa la eliminación una vez que el Pod ya no se está ejecutando en un nodo, o |
| 70 | +el nodo es eliminado por un administrador. Puedes anular esto forzando la eliminación del Pod. |
| 71 | + |
| 72 | +### Eliminación Forzosa |
| 73 | + |
| 74 | +Las eliminaciones forzosas **no** esperan confirmación de kubelet de que el Pod ha sido terminado. |
| 75 | +Independientemente de si una eliminación forzosa tiene éxito en matar un Pod, inmediatamente |
| 76 | +liberará el nombre del apiserver. Esto permitiría que el controlador de StatefulSet cree un Pod de reemplazo |
| 77 | +con esa misma identidad; esto puede llevar a la duplicación de un Pod que aún está en ejecución, |
| 78 | +y si dicho Pod todavía puede comunicarse con los otros miembros del StatefulSet, |
| 79 | +violará la semántica de como máximo uno que StatefulSet está diseñado para garantizar. |
| 80 | + |
| 81 | +Cuando eliminas forzosamente un Pod de StatefulSet, estás afirmando que el Pod en cuestión nunca |
| 82 | +volverá a hacer contacto con otros Pods en el StatefulSet y su nombre puede ser liberado de forma segura para que |
| 83 | +se cree un reemplazo. |
| 84 | + |
| 85 | + |
| 86 | +Si quieres eliminar un Pod de forma forzosa usando la versión de kubectl >= 1.5, haz lo siguiente: |
| 87 | + |
| 88 | +```shell |
| 89 | +kubectl delete pods <pod> --grace-period=0 --force |
| 90 | +``` |
| 91 | + |
| 92 | +Si estás usando cualquier versión de kubectl <= 1.4, deberías omitir la opción `--force` y usar: |
| 93 | + |
| 94 | +```shell |
| 95 | +kubectl delete pods <pod> --grace-period=0 |
| 96 | +``` |
| 97 | + |
| 98 | +Si incluso después de estos comandos el pod está atascado en el estado `Unknown`, usa el siguiente comando para |
| 99 | +eliminar el Pod del clúster: |
| 100 | + |
| 101 | +```shell |
| 102 | +kubectl patch pod <pod> -p '{"metadata":{"finalizers":null}}' |
| 103 | +``` |
| 104 | + |
| 105 | +Siempre realiza la eliminación forzosa de Pods de StatefulSet con cuidado y con pleno conocimiento de los riesgos involucrados. |
| 106 | + |
| 107 | +## {{% heading "whatsnext" %}} |
| 108 | + |
| 109 | +Aprende más sobre [depurar un StatefulSet](/docs/tasks/debug/debug-application/debug-statefulset/). |
0 commit comments