Què és Kubernetes?

Kubernetes és una plataforma de codi obert per a l'orquestració de contenidors que automatitza la gestió, el desplegament, l'escalat i les operacions de les aplicacions contenidoritzades. Va ser desenvolupada per Google i ara és mantinguda per la Cloud Native Computing Foundation (CNCF).

Conceptes Clau de Kubernetes

  1. Clúster de Kubernetes: Un conjunt de màquines (nodes) que executen aplicacions contenidoritzades gestionades per Kubernetes.
  2. Node: Una màquina individual dins del clúster de Kubernetes. Pot ser una màquina física o virtual.
  3. Pod: La unitat bàsica de desplegament en Kubernetes. Un pod pot contenir un o més contenidors que comparteixen el mateix espai de xarxa i emmagatzematge.
  4. Controlador: Un component que gestiona l'estat dels pods. Exemples inclouen Deployment, StatefulSet, i DaemonSet.
  5. Service: Una abstracció que defineix una política d'accés a un conjunt de pods. Proporciona un punt d'entrada estable per accedir als pods.
  6. Namespace: Una manera de dividir un clúster de Kubernetes en múltiples entorns virtuals.

Arquitectura de Kubernetes

Component Descripció
Master Node Gestiona el clúster de Kubernetes. Inclou components com l'API Server, etcd, Scheduler, i Controller Manager.
Worker Node Executa les aplicacions contenidoritzades. Inclou components com el kubelet, kube-proxy, i el runtime de contenidors.

Components del Master Node

  1. API Server: Punt d'entrada per a totes les operacions administratives del clúster.
  2. etcd: Emmagatzematge de dades distribuït que guarda tota la informació del clúster.
  3. Scheduler: Assigna els pods als nodes disponibles.
  4. Controller Manager: Gestiona els controladors que regulen l'estat del clúster.

Components del Worker Node

  1. kubelet: Agent que s'executa en cada node i garanteix que els contenidors estan executant-se dins dels pods.
  2. kube-proxy: Gestiona les regles de xarxa en cada node.
  3. Container Runtime: Software que executa els contenidors (per exemple, Docker, containerd).

Instal·lació de Kubernetes

Prerequisits

  • Coneixements bàsics de Docker.
  • Accés a màquines virtuals o físiques per crear un clúster.

Instal·lació amb Minikube

Minikube és una eina que permet executar un clúster de Kubernetes localment. És ideal per a l'aprenentatge i el desenvolupament.

  1. Instal·la Minikube:

    curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    chmod +x minikube
    sudo mv minikube /usr/local/bin/
    
  2. Inicia Minikube:

    minikube start
    
  3. Verifica l'estat del clúster:

    kubectl get nodes
    

Comandes Bàsiques de Kubernetes

Crear un Pod

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

Desa aquest fitxer com pod.yaml i crea el pod amb la següent comanda:

kubectl apply -f pod.yaml

Llistar Pods

kubectl get pods

Obtenir Detalls d'un Pod

kubectl describe pod my-pod

Eliminar un Pod

kubectl delete pod my-pod

Exercici Pràctic

Objectiu

Crear un clúster de Kubernetes amb Minikube i desplegar un pod que executi un servidor web Nginx.

Passos

  1. Inicia Minikube:

    minikube start
    
  2. Crea un fitxer nginx-pod.yaml amb el següent contingut:

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod
    spec:
      containers:
      - name: nginx-container
        image: nginx
    
  3. Desplega el pod:

    kubectl apply -f nginx-pod.yaml
    
  4. Verifica que el pod està en execució:

    kubectl get pods
    
  5. Accedeix al pod:

    kubectl port-forward nginx-pod 8080:80
    
  6. Obre un navegador i visita http://localhost:8080 per veure la pàgina de benvinguda de Nginx.

Resum

En aquesta secció, hem introduït Kubernetes, una plataforma d'orquestració de contenidors. Hem explorat la seva arquitectura, components clau i comandes bàsiques. També hem realitzat un exercici pràctic per desplegar un pod amb un servidor web Nginx utilitzant Minikube. En el següent tema, aprofundirem en el desplegament de contenidors Docker a Kubernetes.

© Copyright 2024. Tots els drets reservats