Skip to content

Commit 22bb53f

Browse files
authored
Merge pull request #46005 from eduardoSalazarCarrillo/leases-es
[es] Added docs/concepts/architecture/leases to Spanish
2 parents 92f633e + 5de3b0f commit 22bb53f

File tree

1 file changed

+106
-0
lines changed
  • content/es/docs/concepts/architecture

1 file changed

+106
-0
lines changed
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
---
2+
title: Leases
3+
api_metadata:
4+
- apiVersion: "coordination.k8s.io/v1"
5+
kind: "Lease"
6+
content_type: concept
7+
weight: 30
8+
---
9+
10+
<!-- overview -->
11+
12+
Los sistemas distribuidos suelen necesitar _leases_, que proporcionan un mecanismo para bloquear recursos compartidos
13+
y coordinar la actividad entre los miembros de un conjunto.
14+
En Kubernetes, el concepto de lease (arrendamiento) está representado por objetos [Lease](/docs/reference/kubernetes-api/cluster-resources/lease-v1/)
15+
en el {{< glossary_tooltip text="grupo API" term_id="api-group" >}} de `coordination.k8s.io`,
16+
que se utilizan para capacidades críticas del sistema, como los heartbeats del nodo y la elección del líder a nivel de componente.
17+
<!-- body -->
18+
19+
## Heartbeats del nodo {#node-heart-beats}
20+
21+
Kubernetes utiliza la API Lease para comunicar los heartbeats de los nodos kubelet al servidor API de Kubernetes.
22+
Para cada `Nodo` , existe un objeto `Lease` con un nombre que coincide en el espacio de nombres `kube-node-lease`.
23+
Analizando a detalle, cada hearbeat es una solicitud **update** a este objeto `Lease`, actualizando
24+
el campo `spec.renewTime` del objeto Lease. El plano de control de Kubernetes utiliza la marca de tiempo de este campo
25+
para determinar la disponibilidad de este «Nodo».
26+
27+
Ve [Objetos Lease de nodos](/docs/concepts/architecture/nodes/#heartbeats) para más detalles.
28+
29+
## Elección del líder
30+
31+
32+
Kubernetes también utiliza Leases para asegurar que sólo una instancia de un componente se está ejecutando en un momento dado.
33+
Esto lo utilizan componentes del plano de control como `kube-controller-manager` y `kube-scheduler` en configuraciones de
34+
HA, donde sólo una instancia del componente debe estar ejecutándose activamente mientras las otras
35+
instancias están en espera.
36+
37+
## Identidad del servidor API
38+
39+
{{< feature-state feature_gate_name="APIServerIdentity" >}}
40+
41+
A partir de Kubernetes v1.26, cada `kube-apiserver` utiliza la API Lease para publicar su identidad al resto del sistema.
42+
Aunque no es particularmente útil por sí mismo, esto proporciona un mecanismo para que los clientes
43+
puedan descubrir cuántas instancias de `kube-apiserver` están operando el plano de control de Kubernetes.
44+
La existencia de los objetos leases de kube-apiserver permite futuras capacidades que pueden requerir la coordinación entre
45+
cada kube-apiserver.
46+
47+
Puedes inspeccionar los leases de cada kube-apiserver buscando objetos leases en el namespace `kube-system`
48+
con el nombre `kube-apiserver-<sha256-hash>`. También puedes utilizar el selector de etiquetas `apiserver.kubernetes.io/identity=kube-apiserver`:
49+
50+
```shell
51+
kubectl -n kube-system get lease -l apiserver.kubernetes.io/identity=kube-apiserver
52+
```
53+
```
54+
NAME HOLDER AGE
55+
apiserver-07a5ea9b9b072c4a5f3d1c3702 apiserver-07a5ea9b9b072c4a5f3d1c3702_0c8914f7-0f35-440e-8676-7844977d3a05 5m33s
56+
apiserver-7be9e061c59d368b3ddaf1376e apiserver-7be9e061c59d368b3ddaf1376e_84f2a85d-37c1-4b14-b6b9-603e62e4896f 4m23s
57+
apiserver-1dfef752bcb36637d2763d1868 apiserver-1dfef752bcb36637d2763d1868_c5ffa286-8a9a-45d4-91e7-61118ed58d2e 4m43s
58+
59+
```
60+
61+
62+
El hash SHA256 utilizado en el nombre del lease se basa en el nombre de host del sistema operativo visto por ese servidor API. Cada kube-apiserver debe ser
63+
configurado para utilizar un nombre de host que es único dentro del clúster. Las nuevas instancias de kube-apiserver que utilizan el mismo nombre de host
64+
asumirán los leases existentes utilizando una nueva identidad de titular, en lugar de instanciar nuevos objetos leases. Puedes comprobar el
65+
nombre de host utilizado por kube-apiserver comprobando el valor de la etiqueta `kubernetes.io/hostname`:
66+
67+
```shell
68+
kubectl -n kube-system get lease apiserver-07a5ea9b9b072c4a5f3d1c3702 -o yaml
69+
```
70+
```yaml
71+
apiVersion: coordination.k8s.io/v1
72+
kind: Lease
73+
metadata:
74+
creationTimestamp: "2023-07-02T13:16:48Z"
75+
labels:
76+
apiserver.kubernetes.io/identity: kube-apiserver
77+
kubernetes.io/hostname: master-1
78+
name: apiserver-07a5ea9b9b072c4a5f3d1c3702
79+
namespace: kube-system
80+
resourceVersion: "334899"
81+
uid: 90870ab5-1ba9-4523-b215-e4d4e662acb1
82+
spec:
83+
holderIdentity: apiserver-07a5ea9b9b072c4a5f3d1c3702_0c8914f7-0f35-440e-8676-7844977d3a05
84+
leaseDurationSeconds: 3600
85+
renewTime: "2023-07-04T21:58:48.065888Z"
86+
```
87+
88+
Los leases caducados de los kube-apiservers que ya no existen son recogidos por los nuevos kube-apiservers después de 1 hora.
89+
90+
Puedes desactivar el lease de identidades del servidor API desactivando la opción `APIServerIdentity` de los [interruptores de funcionalidades](/docs/reference/command-line-tools-reference/feature-gates/).
91+
92+
## Cargas de trabajo {#custom-workload}
93+
94+
Tu propia carga de trabajo puede definir su propio uso de los leases. Por ejemplo, puede ejecutar un
95+
{{< glossary_tooltip term_id=controller text=controlador >}} en la que un miembro principal o líder
96+
realiza operaciones que sus compañeros no realizan. Tú defines un Lease para que las réplicas del controlador puedan seleccionar
97+
o elegir un líder, utilizando la API de Kubernetes para la coordinación.
98+
Si utilizas un lease, es una buena práctica definir un nombre para el lease que esté obviamente vinculado a
99+
el producto o componente. Por ejemplo, si tienes un componente denominado Ejemplo Foo, utilice un lease denominado
100+
`ejemplo-foo`.
101+
102+
Si un operador de clúster u otro usuario final puede desplegar varias instancias de un componente, selecciona un nombre
103+
prefijo y elije un mecanismo (como el hash del nombre del despliegue) para evitar colisiones de nombres
104+
para los leases.
105+
106+
Puedes utilizar otro enfoque siempre que consigas el mismo resultado: los distintos productos de software no entren en conflicto entre sí.

0 commit comments

Comments
 (0)