Sobes.tech
Middle

Qual é a diferença entre Deployment e DaemonSet no Kubernetes?

sobes.tech IA

Resposta da IA

Deployment gere um conjunto de réplicas de Pods, garantindo a quantidade necessária e o escalonamento automático. É adequado para a maioria das aplicações sem estado.

DaemonSet garante que uma cópia do Pod seja executada em cada nó (ou em um subconjunto de nós, de acordo com o seletor) do cluster. Usado para tarefas em segundo plano, como recolha de logs ou monitorização.

Aqui estão as diferenças-chave:

Característica Deployment DaemonSet
Objetivo Manter um número definido de réplicas de Pods Executar um Pod em cada nó (ou subconjunto)
Número de Pods Controlado pelo parâmetro replicas Determinado pelo número de nós
Escalonamento Horizontal, sob demanda Relacionado à adição/remoção de nós
Exemplos de uso Servidores web, microserviços Recolhedores de logs, agentes de monitorização, daemons de rede
Atualização Gradual (atualização contínua) ou substituição Atualiza-se automaticamente nos nós conforme necessário

Exemplo de manifesto para Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3 # Executar 3 cópias do Pod
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

Exemplo de manifesto para DaemonSet:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentbit-daemonset
spec:
  selector:
    matchLabels:
      name: fluentbit # Etiqueta para o seletor de Pods
  template:
    metadata:
      labels:
        name: fluentbit
    spec:
      containers:
      - name: fluentbit
        image: fluent/fluent-bit:1.8 # Imagem para o recolhedor de logs
        # Configurações adicionais para acesso a ficheiros de logs, etc.
      tolerations:
      # Frequentemente necessário para executar em nós master
      - key: node-role.kubernetes.io/master
        effect: NoSchedule