Introducció
Un DaemonSet és un objecte de Kubernetes que assegura que una còpia d'un pod s'executi en cada node del clúster. Els DaemonSets són útils per a tasques que necessiten córrer en tots els nodes, com ara serveis de monitorització, registre o altres serveis de sistema.
Conceptes Clau
- Pod: Un grup de contenidors que s'executen junts en un node.
- Node: Una màquina (física o virtual) dins del clúster de Kubernetes.
- DaemonSet: Un controlador que assegura que un pod específic s'executi en tots els nodes del clúster.
Creació d'un DaemonSet
Exemple de YAML per a un DaemonSet
A continuació es mostra un exemple de fitxer YAML per crear un DaemonSet que executa un pod amb l'aplicació fluentd
per a la recollida de logs:
apiVersion: apps/v1 kind: DaemonSet metadata: name: fluentd labels: app: fluentd spec: selector: matchLabels: name: fluentd template: metadata: labels: name: fluentd spec: containers: - name: fluentd image: fluent/fluentd:latest resources: limits: memory: "200Mi" cpu: "100m" volumeMounts: - name: varlog mountPath: /var/log - name: varlibdockercontainers mountPath: /var/lib/docker/containers readOnly: true volumes: - name: varlog hostPath: path: /var/log - name: varlibdockercontainers hostPath: path: /var/lib/docker/containers
Explicació del YAML
- apiVersion: La versió de l'API de Kubernetes que s'utilitza.
- kind: El tipus de recurs que es crea, en aquest cas, un DaemonSet.
- metadata: Informació sobre el DaemonSet, com ara el nom i les etiquetes.
- spec: L'especificació del DaemonSet.
- selector: Defineix com seleccionar els pods que pertanyen a aquest DaemonSet.
- template: El model del pod que es crearà en cada node.
- metadata: Informació sobre el pod, com ara les etiquetes.
- spec: L'especificació del pod.
- containers: Una llista de contenidors que s'executaran en el pod.
- name: El nom del contenidor.
- image: La imatge del contenidor.
- resources: Els recursos que el contenidor pot utilitzar.
- volumeMounts: Els volums que es muntaran en el contenidor.
- volumes: Els volums que es muntaran en el pod.
- containers: Una llista de contenidors que s'executaran en el pod.
Comandes de Gestió de DaemonSets
Crear un DaemonSet
Per crear un DaemonSet, utilitza la comanda kubectl apply
amb el fitxer YAML:
Llistar DaemonSets
Per llistar tots els DaemonSets en un namespace, utilitza la comanda:
Descriure un DaemonSet
Per obtenir informació detallada sobre un DaemonSet, utilitza la comanda:
Eliminar un DaemonSet
Per eliminar un DaemonSet, utilitza la comanda:
Exercicis Pràctics
Exercici 1: Crear un DaemonSet
- Crea un fitxer YAML per a un DaemonSet que executi un contenidor
nginx
en tots els nodes del clúster. - Aplica el fitxer YAML per crear el DaemonSet.
- Verifica que el DaemonSet s'ha creat correctament i que un pod
nginx
s'executa en cada node.
Solució
apiVersion: apps/v1 kind: DaemonSet metadata: name: nginx labels: app: nginx spec: selector: matchLabels: name: nginx template: metadata: labels: name: nginx spec: containers: - name: nginx image: nginx:latest
Exercici 2: Monitoritzar un DaemonSet
- Descriu el DaemonSet
nginx
que has creat en l'exercici anterior. - Verifica els logs d'un dels pods
nginx
.
Solució
Errors Comuns i Consells
- Error: No s'executen pods en alguns nodes: Assegura't que els nodes estan disponibles i no tenen taints que impedeixin l'execució dels pods.
- Error: El DaemonSet no es crea: Verifica que el fitxer YAML és correcte i que no hi ha errors de sintaxi.
- Consell: Utilitza etiquetes i selectors de manera coherent per assegurar que els pods es gestionen correctament.
Conclusió
Els DaemonSets són una eina poderosa per assegurar que certs serveis s'executin en tots els nodes del clúster de Kubernetes. Són especialment útils per a tasques de monitorització, registre i altres serveis de sistema que necessiten estar presents en cada node. Amb la comprensió dels conceptes clau i la pràctica amb exemples, estaràs preparat per utilitzar DaemonSets de manera efectiva en els teus desplegaments de Kubernetes.
Curs de Kubernetes
Mòdul 1: Introducció a Kubernetes
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Mòdul 2: Components Bàsics de Kubernetes
Mòdul 3: Gestió de Configuració i Secrets
Mòdul 4: Xarxes en Kubernetes
Mòdul 5: Emmagatzematge en Kubernetes
Mòdul 6: Conceptes Avançats de Kubernetes
Mòdul 7: Monitorització i Registre
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster