Recursos de Kubernetes: ReplicaSet
ReplicaSet
es un recurso de Kubernetes que asegura que siempre se ejecute un número de réplicas de un pod determinado. Por lo tanto, nos asegura que un conjunto de pods siempre están funcionando y disponibles. Nos proporciona las siguientes características:
- Que no haya caída del servicio
- Tolerancia a errores
- Escalabilidad dinámica
Definición yaml de un ReplicaSet
Vamos a ver un ejemplo de definición de ReplicaSet en el fichero nginx-rs.yaml
:
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: nginx
namespace: default
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
replicas
: Indicamos el número de pos que siempre se van a estar ejecutando.selector
: Indicamos el pods que vamos a replicar y vamos a controlar con el ReplicaSet. En este caso va a controlar pods que tenga un labelapp
cuyo valor seanginx
. Si no se indica el camposelector
se seleccionar or defecto los pods cuyos labels sean iguales a los que hemos declarado en la sección siguiente.template
: El recursoReplicaSet
contiene la definición de unpod
.
Al crear el ReplicaSet
se crearán los pods que hemos indicado como número de replicas:
kubectl create -f nginx-rs.yaml
replicaset.extensions "nginx" created
Veamos el ReplicaSet
creado y los pods que ha levantado.
kubectl get rs
NAME DESIRED CURRENT READY AGE
nginx 2 2 2 44s
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-5b2rn 1/1 Running 0 1m
nginx-6kfzg 1/1 Running 0 1m
¿Qué pasaría si borro uno de los pods que se han creado? Inmediatamente se creará uno nuevo para que siempre estén ejecutándose los pods deseados, en este caso 2:
kubectl delete pod nginx-5b2rn
pod "nginx-5b2rn" deleted
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-6kfzg 1/1 Running 0 2m
nginx-lkvzj 0/1 ContainerCreating 0 4s
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-6kfzg 1/1 Running 0 2m
nginx-lkvzj 1/1 Running 0 8s
En cualquier momento puedo escalar el número de pods que queremos que se ejecuten:
kubectl scale rs nginx --replicas=5
replicaset.extensions "nginx" scaled
kubectl get pods --watch
NAME READY STATUS RESTARTS AGE
nginx-6kfzg 1/1 Running 0 5m
nginx-bz2gs 1/1 Running 0 46s
nginx-lkvzj 1/1 Running 0 3m
nginx-ssblp 1/1 Running 0 46s
nginx-xxg4j 1/1 Running 0 46s
Como anteriormente vimos podemos modificar las características de un ReplicaSet
con la siguiente instrucción:
kubectl edit rs nginx
Por último si borramos un ReplicaSet
se borraran todos los pods asociados:
kubectl delete rs nginx
replicaset.extensions "nginx" deleted
kubectl get rs
No resources found.
kubectl get pods
No resources found.
El uso del recurso ReplicaSet
sustituye al uso del recurso ReplicaController
, más concretamente el uso de Deployment
que define un ReplicaSet
.
Índice de entradas sobre Kubernetes
Este artículo corresponde a una serie de entradas donde he hablado sobre Kubernetes:
- Instalación de kubernetes con kubeadm
- Desplegando una aplicación en Kubernetes
- Recursos de Kubernetes: Pods
- Recursos de Kubernetes: ReplicaSet
- Recursos de Kubernetes: Deployment
- Kubernetes: Desplegando la aplicación Mediawiki
- Kubernetes: Desplegando la aplicación GuestBook (Parte 1)
- Recursos de Kubernetes: Services
- El servicio DNS en Kubernetes
- Kubernetes: Desplegando la aplicación GuestBook (Parte 2)
- Kubernetes: Desplegando la aplicación LetsChat
- Recursos de Kubernetes: Ingress
- Accediendo a nuestras aplicaciones Kubernetes con Ingress
- Recursos de Kubernetes: Namespaces
- Kubernetes. Configurando nuestras aplicaciones: variables de entornos, ConfigMap, Secrets
- Kubernetes. Desplegando WordPress con MariaDB
- Almacenamiento en Kubernetes. PersistentVolumen. PersistentVolumenClaims
- Kubernetes. Desplegando WordPress con MariaDB con almacenamiento persistente
- Integración de Kubernetes con OpenStack
Leave a Comment
Your email address will not be published. Required fields are marked *