GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo crear un StatefulSet en Kubernetes

StatefulSets contiene un conjunto de pods con identidades únicas y persistentes y nombres de host estables. Se usa una plantilla de pod en un Statefulset, que contiene una especificación para sus pods, los pods se crean usando esta especificación. Podemos implementar aplicaciones con estado y aplicaciones en clúster utilizando Statefulsets en Kubernetes. StatefulSet se puede actualizar realizando cambios en su especificación Pod, que incluye sus imágenes y volúmenes de contenedor.

StatefulSets se puede usar cuando las aplicaciones requieren cualquiera de las siguientes propiedades.

  • Identificadores de red únicos y estables.
  • Almacenamiento estable y persistente.
  • Implementación ordenada y ordenada y escalabilidad.
  • Actualizaciones continuas ordenadas y automatizadas.

Para un StatefulSet con N réplicas, cuando se implementan pods, se crean secuencialmente, en orden desde {0..N-1}. Cuando se eliminan pods, se terminan en orden inverso, desde {N-1..0}.

Para saber más sobre Statefulset, haga clic aquí.

En este artículo, crearemos un Statefulset con réplicas de pods de Nginx. Realizaremos operaciones en los Pods para ver cómo se eliminan y crean.

Requisitos previos

  1. Clúster de Kubernetes con al menos 1 nodo trabajador.
    Si desea aprender a crear un Clúster de Kubernetes, haga clic aquí. Esta guía lo ayudará a crear un clúster de Kubernetes con 1 maestro y 2 nodos en instancias AWS Ubuntu 18l04 EC2.

Lo que haremos

  1. Crear un conjunto de estado

Crea un conjunto de estados

Cree un archivo y agregue la siguiente definición Statefulset en él.

vim statefulset.yml

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx
  serviceName: "nginx"
  replicas: 3
  template:
    metadata:
      labels:
        app: nginx
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: k8s.gcr.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web

En este ejemplo, 

  • Un servicio sin cabeza, llamado nginx , se utiliza para controlar la red.
  • El StatefulSet, llamado web, tiene 3 réplicas del contenedor nginx que se lanzarán en Pods únicos.
  • La imagen de nginx con la versión slim:0.8 se usa para implementar Nginx.

Para crear un Statefulset, ejecute los siguientes comandos.

kubectl obtiene conjunto de estado

kubectl create -f statefulset.yml

Ejecute los siguientes 2 comandos para listar el Statefulset y el Servicio creado en el paso anterior.

kubectl obtiene conjunto de estado

servicio de obtención de kubectl

Obtenga los pods usando el siguiente comando y vea que los pods tienen números como sufijo en el nombre del pod.

kubectl obtener pods

Para obtener los detalles completos del Statefulset, ejecute los siguientes comandos.

kubectl obtiene conjunto de estado

kubectl describe web statefulset

Ahora, eliminemos los pods y veamos cómo se conservan los nombres incluso después de crear nuevos pods.

Estamos eliminando 2 pods para ver qué nombres se asignarán a los nuevos pods al momento de la creación.

kubectl obtener pods

kubectl eliminar pods web-0 web-2

kubectl obtener pods

En la captura de pantalla anterior, puede ver que, incluso después de eliminar los pods, los pods recién creados reciben el mismo nombre.

Conclusión

En este artículo, creamos un Statefulset y realizamos operaciones en él para verificar sus detalles. También eliminamos los pods para ver cómo se conserva el nombre del pod y se asigna lo mismo a los pods recién creados después de eliminarlo.


Linux
  1. Cómo crear etiquetas Git

  2. Cómo crear un subdominio

  3. Cómo crear un subdominio

  4. Cómo eliminar un servicio en Kubernetes

  5. ¿Cómo obtener el historial de Pods ejecutados en Kubernetes Node?

Cómo crear un archivo en Linux

Cómo crear un archivo Tar Gz

Cómo crear un módulo de Terraform

Cómo crear un Deployment en Kubernetes

Cómo crear un clúster de Kubernetes con AWS CLI

Cómo crear y administrar pods de Kubernetes en Linux