En esta sección, exploraremos los conceptos y la terminología fundamental de Kubernetes. Comprender estos términos es crucial para avanzar en el uso y la administración de Kubernetes.

  1. Clúster de Kubernetes

Un clúster de Kubernetes es un conjunto de máquinas (físicas o virtuales) que trabajan juntas para ejecutar aplicaciones en contenedores. Un clúster de Kubernetes consta de dos tipos de recursos:

  • Nodos de Control (Control Plane): Gestionan el clúster y su estado.
  • Nodos de Trabajo (Worker Nodes): Ejecutan las aplicaciones en contenedores.

  1. Nodo

Un nodo es una máquina (física o virtual) en el clúster de Kubernetes. Hay dos tipos de nodos:

  • Nodo de Control: Gestiona el clúster y su estado.
  • Nodo de Trabajo: Ejecuta las aplicaciones en contenedores.

  1. Pod

Un pod es la unidad más pequeña y básica de despliegue en Kubernetes. Un pod puede contener uno o más contenedores que comparten el mismo espacio de red y almacenamiento. Los pods son efímeros y pueden ser reemplazados por otros pods en cualquier momento.

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx

  1. ReplicaSet

Un ReplicaSet asegura que un número especificado de réplicas de un pod estén ejecutándose en todo momento. Si un pod falla, el ReplicaSet crea un nuevo pod para reemplazarlo.

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: my-replicaset
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx

  1. Deployment

Un Deployment proporciona actualizaciones declarativas para los pods y ReplicaSets. Puedes definir el estado deseado de tu aplicación y Kubernetes se encargará de gestionar el proceso de actualización.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx

  1. Servicio (Service)

Un Servicio en Kubernetes es una abstracción que define un conjunto lógico de pods y una política para acceder a ellos. Los servicios permiten la comunicación entre diferentes componentes de una aplicación.

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: my-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80

  1. Namespace

Un Namespace es una forma de dividir un clúster de Kubernetes en múltiples entornos virtuales. Los namespaces son útiles para organizar y gestionar recursos en un clúster compartido.

apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace

  1. ConfigMap

Un ConfigMap es un objeto que permite almacenar datos de configuración en pares clave-valor. Los ConfigMaps se utilizan para separar la configuración del código de la aplicación.

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  key1: value1
  key2: value2

  1. Secret

Un Secret es similar a un ConfigMap, pero se utiliza para almacenar información sensible, como contraseñas, tokens y claves SSH.

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  username: YWRtaW4=
  password: MWYyZDFlMmU2N2Rm

  1. Volumen

Un Volumen es una forma de almacenar datos que persisten más allá de la vida útil de un pod. Los volúmenes pueden ser de diferentes tipos, como volúmenes persistentes, volúmenes efímeros, etc.

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    volumeMounts:
    - mountPath: "/data"
      name: my-volume
  volumes:
  - name: my-volume
    emptyDir: {}

  1. Ingress

Un Ingress es un objeto que gestiona el acceso externo a los servicios en un clúster de Kubernetes, típicamente HTTP y HTTPS. Ingress puede proporcionar balanceo de carga, terminación SSL y alojamiento virtual basado en nombres.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
  - host: my-app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

  1. StatefulSet

Un StatefulSet es una API de Kubernetes que gestiona el despliegue y el escalado de un conjunto de pods, y proporciona garantías sobre el orden y la unicidad de estos pods.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: my-statefulset
spec:
  serviceName: "my-service"
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx

  1. DaemonSet

Un DaemonSet asegura que todos (o algunos) nodos ejecuten una copia de un pod. Cuando se añade un nodo al clúster, se añade un pod para él.

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: my-daemonset
spec:
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx

  1. Job y CronJob

Un Job crea uno o más pods y asegura que un número específico de ellos terminen exitosamente. Un CronJob crea Jobs en un horario basado en cron.

apiVersion: batch/v1
kind: Job
metadata:
  name: my-job
spec:
  template:
    spec:
      containers:
      - name: my-container
        image: busybox
        command: ["echo", "Hello, Kubernetes!"]
      restartPolicy: OnFailure
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: my-cronjob
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: my-container
            image: busybox
            command: ["echo", "Hello, Kubernetes!"]
          restartPolicy: OnFailure

Conclusión

En esta sección, hemos cubierto los conceptos y la terminología clave de Kubernetes. Estos términos forman la base de la comprensión de cómo funciona Kubernetes y cómo se gestionan las aplicaciones en un clúster. En el próximo módulo, profundizaremos en los componentes principales de Kubernetes, comenzando con los Pods.

Curso de Kubernetes

Módulo 1: Introducción a Kubernetes

Módulo 2: Componentes Principales de Kubernetes

Módulo 3: Gestión de Configuración y Secretos

Módulo 4: Redes en Kubernetes

Módulo 5: Almacenamiento en Kubernetes

Módulo 6: Conceptos Avanzados de Kubernetes

Módulo 7: Monitoreo y Registro

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados